过滤 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'。
Apple 有意让这成为不可能吗?因为使用“==”运算符效果很好。
目前,仅支持“=”和"IN"运算符用于谓词按来源过滤HKSamples。
我只是想更新这个,这样如果有人想做类似的事情...
如果您只是想了解统计数据,最好的解决方法是进行两次查询,然后将数字相减。
查询 1(所有样本)- 查询 2(我的样本)
然后你就有了你想要的。
我会这样做:
NSPredicate *pred = [NSPredicate predicateFromString:@"%K != %@", HKPredicateKeyPathSource, [HKSource defaultSource]];
NSPredicate *nonPred = [NSCompoundPredicate notPredicateWithSubpredicate:pred];
我有一个应用程序可以生成 HealthKit 卡路里条目并运行 HKStatistics 查询以获取卡路里数据。
除了手动排除我所知道的我所写内容的数值外,我似乎无法想出一种方法来设置查询,该查询仅来自 returns 来源的数据'我自己的应用程序。
我使用过这样设置的谓词:
NSPredicate *pred = [NSPredicate predicateFromString:@"%K != %@", HKPredicateKeyPathSource, [HKSource defaultSource]];
但这引发了一个异常,表明在查询源密钥时不允许使用 'type 5 operator'。
Apple 有意让这成为不可能吗?因为使用“==”运算符效果很好。
目前,仅支持“=”和"IN"运算符用于谓词按来源过滤HKSamples。
我只是想更新这个,这样如果有人想做类似的事情...
如果您只是想了解统计数据,最好的解决方法是进行两次查询,然后将数字相减。
查询 1(所有样本)- 查询 2(我的样本)
然后你就有了你想要的。
我会这样做:
NSPredicate *pred = [NSPredicate predicateFromString:@"%K != %@", HKPredicateKeyPathSource, [HKSource defaultSource]];
NSPredicate *nonPred = [NSCompoundPredicate notPredicateWithSubpredicate:pred];