HKAnchoredObjectQuery是否自动缓存锚点?

时间:2015-09-07 22:13:00

标签: ios health-kit hksamplequery

class reference或网上提供的任何教程都没有说明应用程序运行之间的缓存锚点。

我想在应用运行之间查询数据,以便获取所有历史HealthKit条目。首先,我认为我需要在NSDate中存储最后一个查询NSUserDefaults,然后在下一个应用运行中,我只需点击此值并将其设置为startDate HKSampleQuery但是经过一些阅读之后,我遇到了一个名为HKAnchoredObjectQuery这个很酷的东西,应该为我处理这个缓存,所以每当我点击时我都会得到新的条目。

此类是否会自动存储主播,或者只是将其存储在应用运行中,当应用终止时,所有内容都会被清除,我会再次使用HKAnchoredObjectQueryNoAnchor开始?

2 个答案:

答案 0 :(得分:4)

您的应用必须存储HKQueryAnchor本身。 HKAnchoredObjectQuery可以在应用程序启动时为您缓存它 - HealthKit如何知道您为同一目的执行相同的查询?

答案 1 :(得分:0)

在代码中进行一些实验后,看起来是常规的Int(< 9.0)或HKQueryAnchor(> = 9.0)和只有当app在froeground中时它才有价值 如果您(像我一样)希望在应用运行之间保留此值,则必须手动存储它,例如NSUserDefaults

我仍然没有完全确信他们只能根据简单的Int值来关注这一点...对我来说更可靠的解决方案是手动存储上次查询的NSDate执行并仅基于此查询项目来自此日期范围 可能有用的另外一件事 - HKAnchoredObjectQuery会按升序自动对返回的数据进行排序。