从 HKObserverQuery 获取结果
Posted
技术标签:
【中文标题】从 HKObserverQuery 获取结果【英文标题】:Obtaining results from HKObserverQuery 【发布时间】:2015-01-24 16:46:53 【问题描述】:我几天前发布了Setting up HKObserverQuery using Swift。
我还想知道,是否有办法使用 HKObserverQuery 获取刚刚添加到 HealthKit 中的最新数据点的值,或者它只是让您知道添加了一个新数据点,但是您仍然需要使用 HKSampleQuery 再次查询它来检索值。
【问题讨论】:
【参考方案1】:HKObserverQuery 主要通知样本类型是否已更新。要获取数据,您必须在更新处理程序块或闭包中编写各自的查询(如 HKSampleQuery 或 HKAnchoredObjectQuery)。您应该注意的一件事是提供给观察者查询的谓词,因为它定义了观察更改的时间。结束日期必须是未来的,以便如果通知的任何数据发生变化,它会定义观察者将持续观察变化的时间。如果您想要最新的示例,请尝试使用 HKAnchoredObjectQuery。浏览 HKObserverQuery 的定义。尽量不要将结束日期设置为超过一两天。希望这可以帮助。谓词部分很重要,并且与示例查询的谓词有点不同。如果要启用后台更新,请确保调用 ObserverQueryCompletionHandler。
【讨论】:
【参考方案2】:我一直在寻找相同的答案并找到了另一个帖子: Observing changes in HealthKit data using HKObserverQuery
看来您每次获得更新时都会执行单独的查询
【讨论】:
以上是关于从 HKObserverQuery 获取结果的主要内容,如果未能解决你的问题,请参考以下文章
iOS : HKObserverQuery 的后台更新completionHandler 的使用
HKObserverQueryCompletionHandler 超时?