Swift HealthKit更新生日

时间:2014-09-22 00:46:04

标签: ios objective-c xcode swift health-kit

我想更新Apple Health的生日。但我不知道如何。

这是我的授权功能:

private func requestAuthorisationForHealthStore() {

    let dataTypesToWrite = [
        HKCharacteristicType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierDateOfBirth),
        HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass),
        HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeight)
    ]
    let dataTypesToRead = [
        HKCharacteristicType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierDateOfBirth),
        HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass),
        HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeight)
    ]

    self.healthStore?.requestAuthorizationToShareTypes(NSSet(array: dataTypesToWrite),
        readTypes: NSSet(array: dataTypesToRead), completion: {
            (success, error) in
            if success { println("User completed authorisation request.") }
            else { println("The user cancelled the authorisation request. \(error)") }
    })
}

为了请求生日,我打电话给我的职能:

func requestAgeAndUpdate() {

    var error: NSError?
    let dob = self.healthStore?.dateOfBirthWithError(&error)

    if error != nil {
        println("There was an error requesting the date of birth: \(error)")
        return
    }

    self.ageLabel.text = "\(dob)"
}

但我如何以编程方式更改/更新生日?

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您不能以编程方式更改这些特征。用户必须通过Health App输入此数据。

来自documentation

  

HKCharacteristicType类是其中的具体子类   HKObjectType类。 HealthKit使用特征类型来表示   通常不会随时间变化的数据。与其他对象不同   类型,特征类型不能用于创建新的HealthKit   对象。相反,用户必须输入和编辑其特征数据   使用Health应用程序。特征类型仅在询问时使用   有权从HealthKit商店读取数据。

答案 1 :(得分:0)

HealthKit框架参考;

https://developer.apple.com/library/ios/documentation/HealthKit/Reference/HealthKit_Framework/index.html#//apple_ref/doc/uid/TP40014707

  

HealthKit对象可以分为两大类:特征   和样品。特征对象表示通常的数据   没变。这些数据包括用户的出生日期,血型和   生物性别。您的应用程序无法保存特征数据。该   用户必须使用Health应用程序输入或修改此数据。