ios - 转换为 URLError,然后访问 'code' 属性会导致崩溃

标签 ios swift

当我将 Error 设置为 URLError 时,然后尝试访问其“代码”属性,应用程序崩溃了。我明白了

EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).

func somFunc(things: [Thing]?,
             error: Error?) {

              let errorCopy = (error as? URLError)
              let errorCode = errorCopy?.code //Crash
}

我可以理解转换返回 nil,或者调用代码返回 nil。但我不确定崩溃的原因。

当我在尝试读取“代码”之前打印 errorCopy 时,我得到:

errorCopy: Optional(Foundation.URLError(_nsError: Error Domain=NSURLErrorDomain Code=404 "(null)"))

最佳答案

我仍然无法解释崩溃的原因,但我找到了解决方法。将错误转换为 NSError,然后读取代码属性。

 let errorCopy = (error as? NSError)
 let errorCode = errorCopy?.code

然后我可以使用错误代码而不会崩溃:

if errorCode == URLError.cancelled.rawValue {
//Do Something
}

关于ios - 转换为 URLError,然后访问 'code' 属性会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43081571/

相关文章:

iphone - 你能用 Ruby 开发原生 iPhone 应用程序吗?

ios - 未调用 ELCImagePickerController 委托(delegate)方法

swift - window.backgroundColor 的奇怪行为

iOS Simulator/Interface Builder 偏心

ios - 如何以编程方式从 iOS 应用程序打开 Apple Watch 配套应用程序

ios - 如何从 UIImageView 的扩展内部设置 KingFisher v5.0.0 中的 indicatorType?

ios - 为什么我的程序总是说 "unrecognised selector sent to instance"?

ios - 从 UIDatePicker 快速访问年份

arrays - 表达式类型不明确,没有更多上下文错误

ios - 执行 -layoutSubviews 后仍然需要自动布局。 UICollectionView的-layoutSubviews的实现需要调用super