删除Health App中添加的样本

时间:2015-01-30 15:53:18

标签: ios swift sample health-kit

我添加这样的样本:

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

2 个答案:

答案 0 :(得分:2)

除了Apple的Health应用程序之外,无法删除ApplicationB在ApplicationB中输入的健康数据。

根据Apple的文档,可以删除仅由相应应用程序创建的健康数据。虽然用户具有写入权限,但无法从应用程序中删除其他一些应用程序运行状况数据,但只能从Apple的Health应用程序中删除。

来自the documentation

  

请注意

     

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

答案 1 :(得分:1)

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

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

希望有所帮助!

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