4
は、次のエラーが表示されます。..'() - > Void'の値を '(() - > Void)に割り当てることはできません!'私はスウィフト3を使用しているので
Cannot assign value of type '(LLSimpleCamera?, NSError?) -> Void' to type '((LLSimpleCamera?, Error?) -> 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)
}
}
}
「camera.onError = {(カメラ:LLSimpleCamera ?,エラー:エラー?)」で「camera.onError = {(カメラ:LLSimpleCamera?、エラー:NSError? Void in ... '? – user28434
はい、あなたは正しいです!しかし、Xcodeは、エラーにはドメインとコードのタイプがないと言っています。これを修正する方法は分かりますか? –
まあ、私はあなたの 'NSError'に 'as?'を使ってエラーをキャストしなければならないと思います。 Swift 3の前にはプロトコル 'ErrorType'と古いObjective Cクラス' NSError'がありましたが、Swiftでは単純化の命名方法として、現在は 'Error'(ドメインやその他のプロパティはありません)と呼ばれています。 ObjCのNSErrorがマップされます。 – user28434