8

我添加这样的示例:

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))"],但也没有成功......

4

2 回答 2

2

应用程序A在应用程序B中输入的健康数据是不可能删除的,除了苹果的健康应用程序。

根据 Apple 的文档,可以删除仅由相应应用程序创建的健康数据。尽管用户获得了写入权限,但无法从您的应用程序中删除一些其他应用程序的健康数据,但只能从 Apple 的健康应用程序中删除。

文档中

笔记

尽管您的应用程序只能管理它创建和保存的对象,但用户可以使用 Health 应用程序删除他们想要的任何数据。

于 2015-03-26T07:47:44.120 回答
1

实际上,我从 Apple 那里得到了一些帮助来解决这个确切的问题,但我还没有解决它。您的编码方式与我完全相同,但他们告诉我问题是我们正在创建一个新样本,然后尝试立即将其删除。该示例尚不存在,因此它返回未找到项目错误。

需要做的(理论上)是运行 HKSampleQuery,然后使用从中返回的对象执行删除。该对象已存在于 HealthKit 中,可以删除。

希望有帮助!

编辑:解决了...我发现我的日期/时间戳太严格了。我修改了 startDate / endDate 以返回 MM/DD/YYYY 格式,并且样本被正确删除。希望对你有帮助!

于 2015-07-30T02:20:32.763 回答