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

z31licg0  于 2023-06-07  发布在  iOS
关注(0)|答案(1)|浏览(108)

当我将Error设置为URLError,然后尝试访问其“code”属性时,应用程序崩溃了。我明白
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。但我不确定坠机的原因。
当我在尝试读取'code'之前打印errorCopy时,我得到:
errorCopy:可选(Foundation.URLError(_nsError:错误域= NSURLErr或域代码=404“(null)”))

drkbr07n

drkbr07n1#

我还是无法解释坠机的原因,但我找到了解决办法。将错误强制转换为NSError,然后读取code属性。

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

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

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

相关问题