class reference或网上提供的任何教程都没有说明应用程序运行之间的缓存锚点。
我想在应用运行之间查询数据,以便获取所有历史HealthKit
条目。首先,我认为我需要在NSDate
中存储最后一个查询NSUserDefaults
,然后在下一个应用运行中,我只需点击此值并将其设置为startDate
HKSampleQuery
但是经过一些阅读之后,我遇到了一个名为HKAnchoredObjectQuery
这个很酷的东西,应该为我处理这个缓存,所以每当我点击时我都会得到新的条目。
此类是否会自动存储主播,或者只是将其存储在应用运行中,当应用终止时,所有内容都会被清除,我会再次使用HKAnchoredObjectQueryNoAnchor
开始?
答案 0 :(得分:4)
您的应用必须存储HKQueryAnchor本身。 HKAnchoredObjectQuery可以在应用程序启动时为您缓存它 - HealthKit如何知道您为同一目的执行相同的查询?
答案 1 :(得分:0)
在代码中进行一些实验后,看起来锚是常规的Int
(< 9.0)或HKQueryAnchor
(> = 9.0)和只有当app在froeground中时它才有价值
如果您(像我一样)希望在应用运行之间保留此值,则必须手动存储它,例如NSUserDefaults
。
我仍然没有完全确信他们只能根据简单的Int
值来关注这一点...对我来说更可靠的解决方案是手动存储上次查询的NSDate
执行并仅基于此查询项目来自此日期范围
可能有用的另外一件事 - HKAnchoredObjectQuery
会按升序自动对返回的数据进行排序。