【问题标题】:Sms Verification with Sinch swift 3使用 Sinch swift 3 进行短信验证
【发布时间】: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 ,这个错误就会消失

Sinch Verification Swift 3

但我需要从 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


【解决方案1】:
let verification = SMSVerification(applicationKey:"<APP KEY>", phoneNumber: phoneNumberInE164)
    verification.initiate { (result: InitiationResult, error: Error?) -> Void in
        // handle outcome
        if (result.success){
          //login user
         } else if let error = error as? NSError, error.code == 6 {
            let msg = NSLocalizedString("This Phone Number is invalid",
                         comment: "This Phone Number is invalid pop up alert")
            print(msg)
         }
    }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
  • 2014-10-19
相关资源
最近更新 更多