2016-09-17 2 views
1

Следующая функция работала в Xcode 7.3 и Swift 2. * после перехода на Xcode 8 и Swift 3.0 У меня возникла следующая ошибка при попытке скомпилироватьУстранение ошибки Xcode Healthkit при переходе на Xcode 8 и Swift 3.0

cannot call value of non-function type ((Bool, _ error:NSError?) -> Void)!

 func authorizeHealthKit(_ completion: ((_ success:Bool, _ error:NSError?) -> Void)!) { 
      healthKitStore = HKHealthStore() 
      let typesSet:Set<HKSampleType> = [ 
        HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bodyTemperature)!, 
        HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.respiratoryRate)!, 
        HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bloodPressureSystolic)!, 
        HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bloodPressureDiastolic)!, 
        HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bodyMass)!, 
        HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate)!, 
        HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.oxygenSaturation)!] 


       healthKitStore?.requestAuthorization(toShare: typesSet, read: typesSet, completion: { (boolVal, error) in 
        completion(success: boolVal, error: error) //<-- compile error here 
      }) 
    } 
+0

[Как отформатировать мои сообщения с помощью Markdown или HTML?] (Http://stackoverflow.com/help/formatting) – buhtz

ответ

0

Попробуйте сделать обработчик завершения опциональный, как показано ниже:

завершения (успех: boolVal, ошибка: ошибка)

отметить также от компании Apple API documentatio n:

Важное замечание Приложение iOS, связанное с или после того, как iOS 10.0 должен включить в свой файл Info.plist ключи описания использования для типов данных, к которым он должен получить доступ, или он сработает. Для доступа и обновления данных HealthKit, в частности, он должен включать в себя ключи NSHealthShareUsageDescription и NSHealthUpdateUsageDescription соответственно.

Надеюсь, это поможет.

Смежные вопросы