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时,它试图访问errorCode
和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. } }
- CGImageRelease在Swift中
- 如何在iPad中检查设备方向从纵向更改为横向和副 – Versa
- 按用户键入的格式将UITextField的文本格式设置为电话号码
- iOS 8 Swift – 保存多个实体的数据
- 使用iOS平移手势突出显示网格中的button
- 在应用程序购买 – 当试图再次购买消费品 – 这个应用程序内购买已经被购买
- 斯威夫特:保持与NSOperation周期
- 更新到Xcode 8后的错误:“没有这样的模块”和“目标覆盖EMBEDDED_CONTENT_CONTAINS_SWIFT”build立设置“
- error handlingAVAudioPlayer的contentsOfURL:错误:在Swift 2中