【发布时间】:2016-12-13 11:39:08
【问题描述】:
您好,我使用 Sinch 短信验证在我的应用中注册用户,但在将我的代码更新到 swift 3(和 sinch sdk 当前为 2.0.3)后,我收到以下错误
Cannot convert value of type '(Bool, NSError?) -> Void' to expected argument type '(Bool, Error?) -> Void'
我知道如果我将 NSError 更改为 Error ,这个错误就会消失
但我需要从 NSError 获取错误代码,以提醒我的用户发生的事情取决于此错误
if (result.success){
//login user
} else {
if error!.code == 6 {
let msg = NSLocalizedString("This Phone Number is invalid",
comment: "This Phone Number is invalid pop up alert")
print(msg)
}
}
来自 Sinch Docs,我想使用这个 NSError:
https://www.sinch.com/docs/verification/ios/#swiftsdk
let verification = SMSVerification(applicationKey:"<APP KEY>", phoneNumber: phoneNumberInE164)
verification.initiate { (result: InitiationResult, error: NSError?) -> Void in
// handle outcome
}
有没有办法从 error:Error 中获取 error.code? 感谢您的帮助
【问题讨论】:
-
Swift 3 将所有
NSError从 Objective C 代码连接到Error类型(协议)。所以在闭包参数中你应该使用Error,并在闭包内部使用as将其转换为NSError。
标签: swift swift3 sinch nserror sinch-verification