是否可以从我的应用程序中删除 HealthKit 条目?
Is it possible to delete a HealthKit entry from my app?
我正在使用 HealthKit 制作一个应用程序,并想尝试在我的 table 视图上添加滑动删除。我知道有一个 healthStore.delete
选项,但这会从 Health 应用程序中删除吗?我怎么知道要从 HealthKit 中删除哪个 HKSample
。
HKSample
class 是一个摘要class。因此你不应该直接实例化一个 HKSample
对象。相反,您始终使用 HKSample
的子 class 之一(HKCategorySample
、HKQuantitySample
、HKCorrelation
或 HKWorkout
classes) 其中 HKSampleClass1
将是子 classes 之一。
healthStore.deleteObject(HKSampleClass1) { (success: Bool, error: NSError?) -> Void in {
if success () {
//success in deletion
}
}}
是的,调用 healthStore.deleteObject()
将从健康中删除样本。但是,请记住,您的应用只能删除它保存到 HealthKit 的样本。
您需要执行查询来检索要向用户显示的样本。您可以使用 HKSampleQuery
或 HKAnchoredObjectQuery
.
第一步,您需要在HKMetadataKeySyncIdentifier中定义您的特定密钥,然后再将您的数据保存到苹果健康。
然后,您可以使用 HKMetadataKeySyncIdentifier 删除特定的健康数据。
let healthKitStore = HKHealthStore()
// SAVE
var meta = [String: Any]()
meta[HKMetadataKeySyncVersion] = 1
meta[HKMetadataKeySyncIdentifier] = "specific key"
let recordSample = HKQuantitySample(type: type, quantity: quantity, start: date, end: date, metadata: meta)
healthKitStore.save(bloodGlucoseSample) { success, error in
if success {
print("saving record to health success")
} else {
print("saving record to health error = \(String(describing: error))")
}
}
// DELETE
let predicate = HKQuery.predicateForObjects(withMetadataKey: HKMetadataKeySyncIdentifier, allowedValues: ["specific key"])
healthKitStore.deleteObjects(of: bloodGlucoseType, predicate: predicate) { success, _, error in
if success {
print("delete health record success")
} else {
print("delete health record error = \(String(describing: error))")
}
}
我正在使用 HealthKit 制作一个应用程序,并想尝试在我的 table 视图上添加滑动删除。我知道有一个 healthStore.delete
选项,但这会从 Health 应用程序中删除吗?我怎么知道要从 HealthKit 中删除哪个 HKSample
。
HKSample
class 是一个摘要class。因此你不应该直接实例化一个 HKSample
对象。相反,您始终使用 HKSample
的子 class 之一(HKCategorySample
、HKQuantitySample
、HKCorrelation
或 HKWorkout
classes) 其中 HKSampleClass1
将是子 classes 之一。
healthStore.deleteObject(HKSampleClass1) { (success: Bool, error: NSError?) -> Void in {
if success () {
//success in deletion
}
}}
是的,调用 healthStore.deleteObject()
将从健康中删除样本。但是,请记住,您的应用只能删除它保存到 HealthKit 的样本。
您需要执行查询来检索要向用户显示的样本。您可以使用 HKSampleQuery
或 HKAnchoredObjectQuery
.
第一步,您需要在HKMetadataKeySyncIdentifier中定义您的特定密钥,然后再将您的数据保存到苹果健康。 然后,您可以使用 HKMetadataKeySyncIdentifier 删除特定的健康数据。
let healthKitStore = HKHealthStore()
// SAVE
var meta = [String: Any]()
meta[HKMetadataKeySyncVersion] = 1
meta[HKMetadataKeySyncIdentifier] = "specific key"
let recordSample = HKQuantitySample(type: type, quantity: quantity, start: date, end: date, metadata: meta)
healthKitStore.save(bloodGlucoseSample) { success, error in
if success {
print("saving record to health success")
} else {
print("saving record to health error = \(String(describing: error))")
}
}
// DELETE
let predicate = HKQuery.predicateForObjects(withMetadataKey: HKMetadataKeySyncIdentifier, allowedValues: ["specific key"])
healthKitStore.deleteObjects(of: bloodGlucoseType, predicate: predicate) { success, _, error in
if success {
print("delete health record success")
} else {
print("delete health record error = \(String(describing: error))")
}
}