转换为URLError,然后访问'代码'财产导致崩溃

时间:2017-03-28 23:17:18

标签: ios swift

当我将Error视为URLError时,请尝试访问其代码'属性应用程序崩溃。我得到了

  

EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)。

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

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

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

当我在尝试阅读'代码'之前打印errorCopy时,我得到:

  

errorCopy:可选(Foundation.URLError(_nsError:错误   Domain = NSURLErrorDomain Code = 404"(null)"))

1 个答案:

答案 0 :(得分:0)

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

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

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

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