下面的函数在Xcode 7.3和Swift 2中工作。*在迁移到Xcode 8和Swift 3.0之后,当我试图编译
无法调用非函数类型的值((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
})
}
最佳答案
尝试将完成处理程序设置为可选,如下所示:
完成?(成功:boolVal,错误:error)
另请注意Apple API文档:
重要的
在iOS 10.0上或之后链接的iOS应用程序必须在其Info.plist文件中包含其需要访问的数据类型的使用说明密钥,否则将崩溃。要访问和更新HealthKit数据,它必须分别包含NSHealthShareUsageDescription和NSHealthUpdateUsageDescription键。
希望这有帮助。
关于ios - 迁移到Xcode 8和Swift 3.0时,Xcode Healthkit授权功能错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39550599/