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

Filter HealthKit Queries to exclude entries made by your own app

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

除了手动排除我所知道的我所写内容的数值外,我似乎无法想出一种方法来设置查询,该查询仅来自 returns 来源的数据'我自己的应用程序。

我使用过这样设置的谓词:

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

但这引发了一个异常,表明在查询源密钥时不允许使用 'type 5 operator'。

A​​pple 有意让这成为不可能吗?因为使用“==”运算符效果很好。

目前,仅支持“=”和"IN"运算符用于谓词按来源过滤HKSamples。

我只是想更新这个,这样如果有人想做类似的事情...

如果您只是想了解统计数据,最好的解决方法是进行两次查询,然后将数字相减。

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

然后你就有了你想要的。

我会这样做:

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