无法将“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”的主要内容,如果未能解决你的问题,请参考以下文章
无法将类型 (PFUser!, NSError) void 的值转换为预期的参数类型 PFUserResultBlock
无法转换类型的值'(数据:CMAccelerometerData!,错误:NSError!)
无法将类型“(UIViewController?,NSError?)-> Void”的值分配给类型“((UIViewController?,错误?)-> Void)?”
Swift 2 到 Swift 3:无法将类型 '(Data?, NSError?) -> Void' 的值转换为预期的参数类型 'GTMSessionFetcherCompletionHand
无法使用类型为 (('WeatherResponse?, NSError?) -> Void 的参数列表调用“responseObject”