Я пытаюсь получить доступ к HK в своем приложении для iOS. У меня все настроено, или я так думал, правильно. Но когда он запускается, я получаю сообщение об ошибке «-[__NSArrayI _allowAuthorizationForReadingWithEntitlements:]: нераспознанный селектор, отправленный экземпляру 0x7f99badc54f0», и я не знаю, почему. Я следил за публикацией Рэя Вендерлиха, и даже его приложение не работает, когда я переименовываю его и запускаю.
Вот мой код, если у кого-то есть идеи, я пытался просмотреть отладку и не могу понять
import Foundation
import HealthKit
class HealthManager {
let healthKitStore : HKHealthStore = HKHealthStore()
func authorizeHealthKit(completion: ((success:Bool, error:NSError!) -> Void)!) {
// What we want to read
let healthKitTypesToRead = Set(arrayLiteral:[
HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBiologicalSex),
HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierDateOfBirth),
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMassIndex),
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeight),
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning),
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierActiveEnergyBurned),
HKObjectType.workoutType()
])
// What we want to write
let healthKitTypesToWrite = Set(arrayLiteral: [
HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBiologicalSex),
HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierDateOfBirth),
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMassIndex),
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeight),
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning),
HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierActiveEnergyBurned),
HKObjectType.workoutType()
])
// Checking if healthkit is available
if !HKHealthStore.isHealthDataAvailable() {
let error = NSError(domain: "com.mpc.Health", code: 2, userInfo: [NSLocalizedDescriptionKey:"HealthKit is not available in this Device"])
if( completion != nil )
{
completion(success:false, error:error)
}
return;
}
//Requesting the authorization
healthKitStore.requestAuthorizationToShareTypes(nil, readTypes: healthKitTypesToRead) { (success, error) -> Void in
if( completion != nil )
{
completion(success:success,error:error)
}
}
}
}