2015-12-22 69 views
0

我发现我需要在每个源的基础上查询HealthKit,以确保我正在接收给定类别中的用户的所有数据。我无法找到文档中的任何内容,解释HKQueryAnchor对象如何处理查询不同来源的问题。特别是,我是否需要为每个数据类型的每个源保存一个锚,还是每个数据类型只需一个锚?或者只需要每个源的锚?HKQueryAnchor每个数据类型,每个源或每个数据源的每个数据类型?

同样,我该如何比较相同数据类型的锚,但不同的数据源。有没有有意义的比较?

我想坚持我的'书签'为每个数据类型和来源,所以我没有收到Health Kit的重复。

回答

0

对于执行的每个不同查询,应该保留单独的锚点。如果谓词或样本类型不同,查询就不同。例如,查询“来自源A的步骤”和“来自源B的步骤”的查询是不同的,因为它们的谓词不同。同样,“源A燃烧的活性能量”和“源A的步骤”也不同,因为它们的样品类型不同,您需要为每个样品存储单独的锚。

有HealthKit源和锚之间没有特殊的关系 - 谓语就是描述您的查询,不管你的谓词的过滤器按来源,日期,金额等

作为一个侧面说明是否:这听起来像您正尝试为特定类型的每个样本源执行单独的锚定对象查询。我认为如果您对样本类型的所有样本执行单个查询,然后根据其来源分别处理样本(通过查看每个HKSamplesource属性),会更简单。那么你只需要为样本类型保留一个锚点。

+0

我该怎么做?我的理解是,如果我查询特定的样本类型,返回的数据将仅来自此数据类型的最高优先级源。这是我阅读和我所看到的。例如,如果我查询了骑行距离,如果我查询了所有来源,则只会返回优先级最高的骑车数据源。这就是为什么我开始查询各个来源......以获取所有数据。 – helloB

+0

您所指的是HKStatisticsQuery如何处理来自不同来源的重叠样本。当您使用HKSampleQuery或HKAnchoredObjectQuery时,您将获得与谓词匹配的所有样本。你是否尝试过执行没有谓词的查询? – Allan

+0

如果我执行时没有任何预测,我也会从我自己的应用程序的源获得结果。我不希望这些重复值输入我的数据流。我凭经验知道,当我提交NSSet数据源时,只包括我自己的所有数据源,我只能从单一来源获取数据,而不是从所有可用数据源获取数据。 – helloB