过滤HealthKit查询以排除您自己的应用程序生成的条目

时间:2015-01-10 11:31:05

标签: ios nspredicate health-kit

我有一个应用程序,可以生成HealthKit卡路里条目并运行HKStatistics查询来获取卡路里数据。

除了手动排除我所知道的数字值之外,我似乎无法找到一种设置查询的方法,该查询仅返回来自非我自己的应用程序的数据源。

我使用了如下设置的谓词:

NSPredicate *pred = [NSPredicate predicateFromString:@"%K != %@", HKPredicateKeyPathSource, [HKSource defaultSource]];

但是,这引发了一个例外,即在查询源密钥时不允许使用“类型5运算符”。

苹果有意让这不可能吗?因为使用'=='运算符可以正常工作。

3 个答案:

答案 0 :(得分:0)

目前,只有" ="和" IN"运算符支持谓词按源过滤HKSamples。

答案 1 :(得分:0)

我只是想更新这个,以便任何人都想做类似的事情......

如果您只是在统计数据之后,最好的解决方法是进行两次查询并相互扣除数字。

查询1(所有样本) - 查询2(我的样本)

然后你有你想要的东西。

答案 2 :(得分:0)

我会这样做:

NSPredicate *pred = [NSPredicate predicateFromString:@"%K != %@", HKPredicateKeyPathSource, [HKSource defaultSource]];
NSPredicate *nonPred = [NSCompoundPredicate notPredicateWithSubpredicate:pred];