利用 HealthKit 和 Core Motion 管理健身数据
1. 利用 HealthKit 访问健康信息
在使用 HealthKit 时,需要了解一些基础概念。HKWorkoutType 并非 HKQuantityType 对象,它是定量的,由描述符(如跑步锻炼)表示,而非数据量。此外, requestAuthorizationToShareTypes()
方法以集合(Set)作为输入,集合与数组不同,它是无序的一组相关值。初始化集合时,需指定集合类型,避免编译器将方括号识别为数组。
1.1 从 HealthKit 检索数据
为了填充锻炼表格,需要从 HealthKit 检索锻炼数据。HealthKit 用于检索数据的主要类是 HKQuery,它能对指定的样本类型进行查询。用户期望数据表保持最新,因此对于锻炼表格,应在应用启动时以及添加新锻炼时查询 HealthKit 获取新数据。这是一个两步过程:
- 创建一个查询以获取给定样本类型的数据。
- 创建一个查询以观察给定样本类型何时有新结果。
这两个查询分别由 HKQuery 的子类 HKSampleQuery 和 HKObserverQuery 表示。
以下是在应用打开时执行锻炼查询的代码示例:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a ni