无法指定类型'() - >的值Void'到'(() - > Void)!'

时间:2016-10-05 13:35:15

标签: ios swift casting swift3

由于我使用Swift 3,会出现以下错误..

  

无法指定类型的值'(LLSimpleCamera?,NSError?) - >无效的   输入'((LLSimpleCamera?,错误?) - > Void)!'

有谁知道该怎么办? 这是我的代码..

camera.onError = { (camera: LLSimpleCamera?, error: NSError?) -> Void in
        print("Camera error: \(error)")

        if error.domain == LLSimpleCameraErrorDomain {
            if error.code == Int(LLSimpleCameraErrorCodeCameraPermission.rawValue) || error.code == Int(LLSimpleCameraErrorCodeMicrophonePermission.rawValue) {

                let alertVC = UIAlertController(title: "Ooops!", message: "We need permission for the camera. Please go to your settings.", preferredStyle: .alert)
                let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
                let settingsAction = UIAlertAction(title: "Settings", style: .default) { (action) in
                    UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
                }

                alertVC.addAction(okAction)
                alertVC.addAction(settingsAction)

                self.present(alertVC, animated: true, completion: nil)
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

Swift 3将目标C NSError类型映射到协议Error({{1>}中的 aka ErrorType

因此,在闭包参数列表中,它期望Swift 2作为第二个参数的类型,而不是Error

但是如果你想使用NSError / error /等,你需要在NSError内输入案例.domain参数。