ios - 如何在 iOS 中使用 updateHandler 和 HKAnchoredObjectQuery?
<p><p>在我的应用程序中,我想使用 <code>HKAnchoredObjectQuery</code> 获取 HealthKit 数据。我编写了返回添加和删除数据的代码,但我想用 <code>HKAnchoredObjectQuery</code> 设置 <code>UpdateHandler</code> 所以,当在 HealthKit 中添加/删除数据时,我会在 app.xml 中收到通知。 </p>
<pre><code>-(void)AnchoredObjectQueryTest
{
HKSampleType *sampleType1 =
;
HKAnchoredObjectQuery *query =
[
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);
}
}];
;
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>实例化并执行您的 HKAnchoredObjectQuery,它将运行一次,回调到 <em>handler</em> <strong>参数</strong>中指定的 block 。</p>
<p>实例化查询并在查询上设置<em>updateHandler</em> <strong>属性</strong>,然后执行查询。查询像以前一样第一次运行,回调您在实例化时提供的<em>处理程序</em> <strong>参数</strong>;当结果被添加或删除到存储并回调到您的 <em>updateHandler</em> 时,查询随后运行。</p>
<p>在我的例子中,我对 handler 参数和 updateHandler 属性使用相同的 block 。</p></p>
<p style="font-size: 20px;">关于ios - 如何在 iOS 中使用 updateHandler 和 HKAnchoredObjectQuery?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/33342864/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/33342864/
</a>
</p>
页:
[1]