0
我想了解HKAnchoredObjectQuery的工作原理。锻炼开始并且锻炼会话状态更改为运行后,我会调用以下函数来执行查询并获取心跳值。为什么HKSample数组对于HKAnchoredObjectQuery总是有1个值,没有限制,没有谓词,没有锚点?
func createHeartRateStreamingQuery() {
guard let quantityType = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate) else { return nil }
var heartRateQuery : HKAnchoredObjectQuery? = HKAnchoredObjectQuery(type: quantityType, predicate: nil, anchor: nil, limit: Int(HKObjectQueryNoLimit)) { (query, sampleObjects, deletedObjects, newAnchor, error) -> Void in
}
heartRateQuery!.updateHandler = {(query, samples, deleteObjects, newAnchor, error) -> Void in
{
//Samples only have 1 entry which is the most recent reading.
}
}
self.healthStore.executeQuery(heartRateQuery!)
}
HeartRateQuery的更新处理程序被调用每2至3秒,样品中的完成处理程序变量仅具有1个读数的心率这是最电流读数。自从锻炼开始以来,它不应该具有心率的所有读数,因为我没有对查询设置任何限制,谓词或锚点?
是的,我注意到更新处理程序只返回最近的最多条目,并且初始结果块将包含所有心率采样。而不是日期,我现在使用从上次更新处理程序获取的锚点来获取应用程序暂停时记录的所有样本 –