2016-11-03 3 views
1

実際にユーザーのdateofBirthおよびbiologicalSexにアクセスする前に認可が決定されました。しかし、それはシミュレータの仕事です。しかし、iphoneとペアウォッチではありません。アップル・ヘルス・キットエラー・ドメイン= com.apple.healthkitコード= 5「認可が確定していません」

let birthdayType = HKQuantityType.characteristicType(forIdentifier: HKCharacteristicTypeIdentifier.dateOfBirth) 
    let biologicalSexType = HKQuantityType.characteristicType(forIdentifier: HKCharacteristicTypeIdentifier.biologicalSex) 
    let quantityType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate) 
    let readDataTypes: Set<HKObjectType> = [quantityType!, birthdayType!, biologicalSexType!] 
    guard HKHealthStore.isHealthDataAvailable() == true else { 
     label.setText("not available") 
     return 
    } 

    let readDataTypes: Set<HKObjectType> = self.dataTypesToRead() 

    healthStore.requestAuthorization(toShare: nil, read: readDataTypes) { (success, error) -> Void in 
     if success == false { 
      self.displayNotAllowed() 
     } 
    } 

    var birthDay: Date! = nil 
    do { 
     birthDay = try self.healthStore.dateOfBirth() 
    } catch let error as NSError{ 
     print("Either an error occured fetching the user's age information or none has been stored yet. \(error)") 
     return -1 
    } 
    var biologicalSex:HKBiologicalSexObject! = nil 
    do { 
     try biologicalSex = self.healthStore.biologicalSex() 
    }catch let error as NSError{ 
     print("Failed to read the biologicalSex! \(error)") 
    } 

答えて

1

これは、並行性の問題であり、HealthKitの問題ではありません。

requestAuthorizationがダイアログを表示し、結果をバックグラウンドプロセスで表示することがあります。

誕生日とbiologicalSexの読み取りを続ける前に、回答がrequestAuthorizationになるまで待つ必要があります。

+0

ありがとうございます。私は問題を解決しました。私のwatchOSのバージョンは2.2.1です。ウォッチとIOSの間でヘルスストアのデータを同期できませんでした。私は自分のwatchOSのバージョンを更新します。それは仕事です:) – Maxwell

関連する問題