删除 Health App 中添加的样本
Posted
技术标签:
【中文标题】删除 Health App 中添加的样本【英文标题】:Delete added sample in Health App 【发布时间】:2015-01-30 15:53:18 【问题描述】:我添加这样的示例:
var store:HKHealthStore?
date = NSDate()
let type = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDietaryVitaminA)
quantity = HKQuantity(unit: HKUnit.gramUnitWithMetricPrefix(.Micro), doubleValue: 100)
let sample = HKQuantitySample(type: type, quantity: quantity, startDate: date, endDate: date)
store.saveObject(sample, withCompletion: (success, error) -> Void in
if(error != nil)
println("Error saving sample: \(error.localizedDescription)")
else
println("Sample saved successfully!")
)
当我想删除这个样本时,我执行:
store.deleteObject(sample, withCompletion: (success, error) -> Void in
if(error != nil)
println("Error deleting sample: \(error.localizedDescription)")
else
println("Sample deleted successfully!")
)
它返回给我:删除样本时出错:找不到对象
每次我对 startDate 和 endDate 使用相同的“日期”。
我试过let sample = HKQuantitySample(type: type, quantity: quantity, startDate: date, endDate: date, metadata: metadata)
,元数据是let metadata = [HKMetadataKeyExternalUUID:"\(Int64(date.timeIntervalSince1970))"]
,但也没有成功......
【问题讨论】:
【参考方案1】:ApplicationA在ApplicationB中输入的健康数据不能删除,Apple的Health app除外。
根据 Apple 的文档,可以删除仅由相应应用程序创建的健康数据。虽然,用户获得了写入权限,但无法从您的应用程序中删除一些其他应用程序的健康数据,但只能从 Apple 的健康应用程序中删除。
来自the documentation:
注意
虽然您的应用只能管理它创建和保存的对象,但用户可以使用 Health 应用删除他们想要的任何数据。
【讨论】:
【参考方案2】:实际上,我从 Apple 那里得到了一些帮助来解决这个确切的问题,但我还没有解决它。您的编码方式与我完全相同,但他们告诉我问题是我们正在创建一个新样本,然后尝试立即将其删除。该示例尚不存在,因此它返回未找到项目错误。
需要做的(理论上)是运行 HKSampleQuery,然后使用从中返回的对象执行删除。该对象已存在于 HealthKit 中,可以删除。
希望有帮助!
编辑:解决了...我发现我的日期/时间戳太严格了。我修改了 startDate / endDate 以返回 MM/DD/YYYY 格式,并且样本被正确删除。希望对你有帮助!
【讨论】:
以上是关于删除 Health App 中添加的样本的主要内容,如果未能解决你的问题,请参考以下文章
如何从具有 HKDevice 的 Health Kit 中查询样本