删除 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 中添加的样本的主要内容,如果未能解决你的问题,请参考以下文章

如何以渐进方式使用 Health Kit 样本查询

动态添加和删除 Spring Boot 健康检查

如何从具有 HKDevice 的 Health Kit 中查询样本

是否可以从我的应用程序中删除 HealthKit 条目?

Cocoa 界面元素,用于添加/删除 Mail.app 中的规则编辑器等字段

Mac OS X中Launchpad的图标添加删除方法(添加方法别试了,和Linux很大区别)