1

无论是类参考还是任何在线可用的教程都没有提及在应用程序运行之间缓存锚点。

我想在应用程序运行之间查询数据,以便获得所有历史HealthKit条目。起初,我认为我需要将最后一个查询存储在下NSDate一次NSUserDefaults应用程序运行时,我只需点击这个值并将设置startDate为我所以每当我点击我只会得到新的条目。 HKSampleQueryHKAnchoredObjectQuery

此类是否会自动存储锚点,还是仅将其存储在应用程序运行时,并且当应用程序终止时,所有内容都将被清除,我又开始了HKAnchoredObjectQueryNoAnchor

4

2 回答 2

4

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

于 2015-09-09T01:23:03.570 回答
0

在代码中做了一些实验之后,看起来这个锚点是一个常规的Int(<9.0) 或HKQueryAnchor(>=9.0) 并且只有当 app 处于 froeground 时它才有价值
如果您(像我一样)想在应用程序运行之间保留此值,则必须手动将其存储在NSUserDefaults.

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

于 2015-09-08T08:57:50.247 回答