Swift 3.1:将自定义错误转换为 NSError 以访问其域属性时崩溃

2024-01-16

我的 Swift 应用程序有一个自定义错误系统,其中MyError只是一个简单的类,符合Error。现在,每当第三方库(PromiseKit)尝试将此错误转换为NSError然后访问它的domain财产。在我自己的代码中,这样做可以按预期工作,那么为什么它会在库中崩溃以及处理它的正确方法是什么?

Crashed: com.apple.main-thread
0  libswiftCore.dylib             0x1011d86d8 _hidden#19226_ (__hidden#19178_:1788)
1  libswiftCore.dylib             0x1011cda3c _hidden#19206_ (__hidden#19447_:4045)
2  libswiftCore.dylib             0x1011cda3c _hidden#19206_ (__hidden#19447_:4045)
3  libswiftCore.dylib             0x1011cdc90 swift_getTypeName (__hidden#19406_:1731)
4  AppName                        0x1001dafec specialized (_adHocPrint_unlocked<A, B where ...> (A, Mirror, inout B, isDebugPrint : Bool) -> ()).(printTypeName #1)<A, B where ...> (Any.Type) -> () (MyError.swift)
5  AppName                        0x1001db4f0 specialized specialized _adHocPrint_unlocked<A, B where ...> (A, Mirror, inout B, isDebugPrint : Bool) -> () (MyError.swift)
6  AppName                        0x1001dafb4 specialized _debugPrint_unlocked<A, B where ...> (A, inout B) -> () (MyError.swift)
7  AppName                        0x1001dac00 protocol witness for Error._domain.getter in conformance MyError (MyError.swift)
8  libswiftCore.dylib             0x10104fa14 swift_stdlib_getErrorDomainNSString (__hidden#18979_:140)
9  libswiftCore.dylib             0x1011f96d8 _hidden#21248_ (__hidden#21275_:440)
10 PromiseKit                     0x100dc7d4c Error.isCancelledError.getter (Error.swift:145)

当从 Error 转换为 NSError 时,它试图访问errorCode and errorDomain。添加这些扩展解决了我在同一情况下的问题。

extension CustomError: LocalizedError {
    public var errorDescription: String? {
        return "Some localized description"
    }
}

extension CustomError: CustomNSError {
    public static var errorDomain: String {
        return "Some Domain Name"
    }
    public var errorCode: Int {
        return 204 //Should be your custom error code.
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 3.1:将自定义错误转换为 NSError 以访问其域属性时崩溃 的相关文章

随机推荐