在我的应用程序中,我想使用 HKAnchoredObjectQuery 获取 HealthKit 数据。我编写了返回添加和删除数据的代码,但我想用 HKAnchoredObjectQuery 设置 UpdateHandler 所以,当在 HealthKit 中添加/删除数据时,我会在 app.xml 中收到通知。
-(void)AnchoredObjectQueryTest
{
HKSampleType *sampleType1 =
[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass];
HKAnchoredObjectQuery *query =
[[HKAnchoredObjectQuery alloc]
initWithType:sampleType1
predicate:nil
anchor: HKAnchoredObjectQueryNoAnchor
limit:HKObjectQueryNoLimit
resultsHandler:^(HKAnchoredObjectQuery * query,
NSArray<HKSample *> * sampleObjects,
NSArray<HKDeletedObject *> * deletedObjects,
HKQueryAnchor *newAnchor,
NSError * error) {
if (error) {
// Perform proper error handling here...
NSLog(@"*** An error occured while performing the anchored object query. %@ ***",
error.localizedDescription);
abort();
}
anchor = newAnchor;
for (HKQuantitySample *sample in sampleObjects) {
NSLog(@"Add : %@", sample);
}
for (HKDeletedObject *sample in deletedObjects) {
NSLog(@"Delete : %@", sample);
}
}];
[healthStore executeQuery:query];
}
Best Answer-推荐答案 strong>
实例化并执行您的 HKAnchoredObjectQuery,它将运行一次,回调到 handler 参数中指定的 block 。
实例化查询并在查询上设置updateHandler 属性,然后执行查询。查询像以前一样第一次运行,回调您在实例化时提供的处理程序 参数;当结果被添加或删除到存储并回调到您的 updateHandler 时,查询随后运行。
在我的例子中,我对 handler 参数和 updateHandler 属性使用相同的 block 。
关于ios - 如何在 iOS 中使用 updateHandler 和 HKAnchoredObjectQuery?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/33342864/
|