【发布时间】:2017-12-24 06:02:04
【问题描述】:
我在一个启用了 HealthKit 的应用程序中使用了以前版本的 Swift 的完成处理程序。 Swift 4.0 中新版本的完成处理程序给我带来了问题。
得到错误:
无法使用类型为“(成功:Bool,错误:NSError?)”的参数列表调用“完成”
我的代码如下所示:
healthKitStore.requestAuthorization(toShare: nil, read: healthKitTypesToRead) { (success, error) -> Void in
if( completion != nil ) {
completion(success:success,error:error! as! NSError)
}
}
使用新的完成处理程序应该如何?解决这个问题时遇到了很多麻烦。
【问题讨论】:
-
应该你的方法签名。顺便说一句,您为什么将完成处理程序声明为可选?以及为什么将错误转换为 NSError。只需按原样返回错误(不需要强制转换或展开)。
completion(success, error)并且不针对 nil 检查完成情况