无法将“NSError”(0x264bd90)类型的值转换为“NSString”

Posted

技术标签:

【中文标题】无法将“NSError”(0x264bd90)类型的值转换为“NSString”【英文标题】:Could not cast value of type 'NSError' (0x264bd90) to 'NSString' 【发布时间】:2017-05-03 13:35:20 【问题描述】:

因此,当我尝试运行此代码并发生错误时,我遇到了崩溃。我不知道如何正确地做到这一点。

这是我的功能:

 @IBAction func MobilePay(_ sender: Any) 
        let payment = MobilePayPayment(orderId: "123456", productPrice: 10.0)
        //No need to start a payment if one or more parameters are missing
        if (payment != nil) && ((payment?.orderId.characters.count)! > 0) && ((payment?.productPrice)! >= 0) 
            MobilePayManager.sharedInstance().beginMobilePayment(with: payment!, error:  (Error) in
                print(Error)
                self.alert(message: Error as! String)
            )
        
    

还有我的错误日志:

Error Domain=com.danskebank.mobilepay Code=1001 "无法打开 MobilePay 应用" UserInfo=NSLocalizedFailureReason=MobilePay 应用未安装, NSLocalizedRecoverySuggestion=请安装 MobilePay 应用并重试。, NSLocalizedDescription=无法打开打开移动支付应用 (0x264d6b8)。 (lldb)

似乎打印工作并且打印了错误,但是我得到了最后一行

(0x264d6b8)。 (lldb)

我该如何解决?

【问题讨论】:

调用局部变量Error 会造成混淆,因为有一个同名的协议。除此之外:是什么让您认为可以将错误转换为字符串? error.localizedDescription 可能就是你想要的。 【参考方案1】:

试试Error对象的localizedDescription属性,像这样:

self.alert(message: Error.localizedDescription)

Error Domain=com.danskebank.mobilepay Code=1001 "无法打开 MobilePay 应用程序" UserInfo=NSLocalizedFailureReason=MobilePay 应用程序不是 已安装, NSLocalizedRecoverySuggestion=请安装 MobilePay 应用 再试一次。, NSLocalizedDescription=无法打开 MobilePay app 无法将“NSError”(0x264bd90)类型的值转换为“NSString” (0x264d6b8)。 (lldb)

【讨论】:

以上是关于无法将“NSError”(0x264bd90)类型的值转换为“NSString”的主要内容,如果未能解决你的问题,请参考以下文章