我有一个应用程序,可以制作HealthKit卡路里条目,并运行HKStatistics查询以获取卡路里数据。
除了手动排除我知道我所写内容的数值之外,我似乎无法找到一种方法来设置仅从不是我自己的应用程序的源返回数据的查询。
我使用的谓词设置如下:
NSPredicate *pred = [NSPredicate predicateFromString:@"%K != %@", HKPredicateKeyPathSource, [HKSource defaultSource]];
但这引发了一个例外,即在查询源密钥时不允许使用"类型 5 运算符"。
苹果是故意让这不可能实现的吗?因为使用"=="运算符工作正常。
目前,仅支持"="和"IN"运算符用于按源筛选 HKS样本的谓词。
我只是想更新它,以便如果有人想做类似的事情......
如果您只是在统计之后,最好的解决方法是执行两个查询并从中扣除数字。
查询 1(所有示例)- 查询 2(我的示例)
然后你就有了你想要的。
我会这样做:
NSPredicate *pred = [NSPredicate predicateFromString:@"%K != %@", HKPredicateKeyPathSource, [HKSource defaultSource]];
NSPredicate *nonPred = [NSCompoundPredicate notPredicateWithSubpredicate:pred];