如何在iOS中的HealthKit中保存HKQuantityTypeIdentifierBodyMass类型的样本

时间:2016-03-31 06:45:02

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

我尝试获取授权以保存HKQuantityTypeIdentifierBodyMass:HKCharacteristicTypeIdentifierDateOfBirth

类型的样本

我的代码是,

NSArray *readTypes = @[[HKObjectType   
    characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth]];

NSArray *writeTypes = @[[HKObjectType 
    quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass]];

[self.healthStore requestAuthorizationToShareTypes:[NSSet setWithArray:readTypes]
    readTypes:[NSSet setWithArray:writeTypes] completion:nil];

当我运行此代码时,我得到了例外:

  

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'不允许共享以下类型的授权:HKCharacteristicTypeIdentifierDateOfBirth'。

我正在iOS 9.2Xcode 7.2中投放。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

根据requestAuthorizationToShareTypes

的文档

typesToShare包含一个包含您要共享的数据类型的集合。该集合可以包含HKSampleType

的任何具体子类

typesToRead包含一个包含要读取的数据类型的集合。该集合可以包含HKObjectType

的任何具体子类

所以在你的情况下,

NSArray *readTypes = @[[HKObjectType   
    characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth]];

NSArray *writeTypes = @[[HKObjectType 
    quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass]];

尝试,

[self.healthStore requestAuthorizationToShareTypes:[NSSet setWithArray:writeTypes]
    readTypes:[NSSet setWithArray:readTypes] completion:nil];

或尝试

NSArray *readTypes = @[[HKObjectType   
    characteristicTypeForIdentifier:HKCharacteristicTypeIdentifierDateOfBirth], [HKObjectType 
    quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass]];
[self.healthStore requestAuthorizationToShareTypes:nil
    readTypes:[NSSet setWithArray:readTypes] completion:nil];