作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试从健康应用程序中获取数据。特别是用户未自行输入的数据。例如,我有一部 iPhone 6+ 可以记录我走的步数。还有一个选项可以手动添加数据;如果您手动添加数据,健康应用会将数据标记为“用户添加”。
这就是让我感到困惑的地方。假设我添加了 22 步计数。当我使用 HKStatisticsQuery 查询数据时,谓词为
HKQuery.predicateForObjectsWithMetadataKey(HKMetadataKeyWasUserEntered, allowedValues: [true])
我得到了 22 个步骤的正确结果,因为我将 allowedValues 设置为 true 并且我自己添加了它。但是,当我尝试将 allowedValues 设置为 false 时,我没有得到任何结果
HKQuery.predicateForObjectsWithMetadataKey(HKMetadataKeyWasUserEntered, allowedValues: [false])
我确实在健康应用程序中有步数数据,但它没有返回任何结果。
最佳答案
检查以下可能的区域以修复它:
nil
.authorizationStatusForType:
方法检查步数的授权状态。更新 1:
我对 wasUserEntered 键的观察是:
HKQuantitySample
会将元数据
字典和 HKWasUserEntered
键一起存储为 TRUE 自动。HKWasUserEntered
的元数据
字典以及值 < em>真/假。否则,metadata
属性将包含 nil
对象。 因此,Apple 不会对没有元数据的数据应用谓词(谓词包含元数据键)。要调试此元数据,请尝试打印您的 HKQuantitySampleObject.metadata
Apple 在元数据上的实现与 NSPredicate 的对比:
元数据
字典添加到相应的健康记录中。元数据
字典来记录他的健康数据。metadata
并且NSPredicate
对metadata
有约束,那么HealthKit完全忽略验证这些记录.最后,
建议使用
代替
+ (instancetype)quantitySampleWithType:(HKQuantityType *)quantityType
quantity:(HKQuantity *)quantity
startDate:(NSDate *)startDate
endDate:(NSDate *)endDate;
添加元数据。
metadata
键)应应用于所有数据,无论是否检查 metadata
是否存在。关于ios - HKMetadataKeyWasUserEntered 坏了吗?当健康应用程序中有数据时,我总是得到 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29197131/
我正在尝试从健康应用程序中获取数据。特别是用户未自行输入的数据。例如,我有一部 iPhone 6+ 可以记录我走的步数。还有一个选项可以手动添加数据;如果您手动添加数据,健康应用会将数据标记为“用户添
我是一名优秀的程序员,十分优秀!