My Swiftアプリケーションには、MyError
がError
に準拠した単純なクラスのカスタムエラーシステムがあります。サードパーティのライブラリ(PromiseKit)がこのエラーをNSError
に変換してからdomain
プロパティにアクセスしようとすると、アプリケーションがクラッシュするようになったようです。私自身のコードでは、これを期待どおりに動作させるので、なぜライブラリでクラッシュするのですか?それを扱う正しい方法は何ですか?Swift 3.1:カスタムエラーがドメインプロパティにアクセスするために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)
あなたのMyErrorにはドメインプロパティが含まれていますか? –
私自身のコードでは、ドメイン値の型名を使用することに戻ります。 – villapossu
http://stackoverflow.com/questions/32981542/declare-trivial-protocol-conformance-for-struct-in-a-framework –