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

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

 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) 

当从错误转换为NSError时,它试图访问errorCodeerrorDomain 。 添加这些扩展在相同的情况下解决了我的问题。

 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. } }