基本的に問題はコードのRawRepresentable部分ですが、その値を取得する必要がありますが、プロトコルにキャストする必要があるためrawValueを使用できません。これを回避するには?プロトコルにキャスティングし、値を使用していますか?
0
A
答えて
1
これは、列挙型の外部でassociatedTypeを使用しようとすると問題になると思います。
私はこのようにそれを固定:あなたがINOUTとして辞書を取り、それにrawValueを置くRawRepresentable上の拡張メソッドを追加することができるかもしれません
public protocol Serializable {
func dictionary() -> [String: Any]
}
extension Serializable {
func dictionary() -> [String: Any] {
var result = [String: Any]()
let mirror = Mirror(reflecting: self)
for child in mirror.children {
guard let label = child.label else { continue }
switch child.value {
case let serializable as Serializable:
result[label] = serializable.dictionary()
case let rawRepresentable as RawRepresentable:
let value = rawRepresentable.getValueAsAny()
result[label] = value
default:
result[label] = child.value
}
}
return result
}
}
extension RawRepresentable {
func getValueAsAny() -> Any {
return rawValue as Any
}
}
+0
新しい拡張機能がないクリーナーソリューションが見つからない限り、私はこれを答えとしてマークします – aryaxt
関連する問題
- 1. エンティティ4.0キャスティング値をDateTimeとして
- 2. RabbitMQはどのプロトコルを使用していますか?
- 3. ios bluetooth GKSessionはどのプロトコルを使用していますか?
- 4. プロトコルのみを使用して型間をキャストしますか?
- 5. wso2はサポートされていないプロトコルを使用します
- 6. 必須プロトコルはNSObjectプロトコルに準拠していますか?
- 7. キャスティングなしのオブジェクトのメソッドの使用
- 8. キャスティングはどのような保護をしていますか?
- 9. Swift内で構造とプロトコルを正しく使用していますか?
- 10. AndroidでJCIFSライブラリを使用しているときにURLでSMBプロトコルを使用しています
- 11. オブジェクトをString []オブジェクトにキャスティングしています..?
- 12. (<T>)ではなく「As」でキャスティングしていますか?
- 13. httpプロキシを使用してAMQPプロトコルを使用できますか?
- 14. クラスは、私は、次のクラス使用していますNSCodingプロトコル
- 15. html - httpプロトコルを使用しないリンク
- 16. 多型/型キャスティングの使用
- 17. MicrosoftサービスApiはフラスコアプリケーションを使用して、oauth2プロトコルを使用して無効な許可を返しますか?
- 18. WebRTCプロトコルを使用してAndroidでビデオチャットアプリケーションを作成したい
- 19. GoogleゴーグルとLayarはどのアプリケーション層プロトコルを使用していますか?
- 20. 分散コンピューティングプラットフォームで共通の接続プロトコルを使用していますか?
- 21. ISNULLを使用して値を設定していますか?
- 22. カスタムURL /プロトコルを使用してMonoTouch iPhoneアプリケーションを起動しますか?
- 23. 特にNSObjectのキャスティングのコスト#defineを使用してiOSでキャストする場合
- 24. 送信プロトコルで使用されていないフィールド値
- 25. Pythonを使用してMSNプロトコルとどのようにインターフェースできますか?
- 26. カスタムタイプをVB6からC#のList <>にキャスティングしますか?
- 27. apache httpcomponentとsftpプロトコル - プロトコルを使用できますか?
- 28. xmppプロトコルを使用してfacebookで認証してチャットします
- 29. チャットアプリケーションがXMPPプロトコルを使用していない - オープンファイアサーバ
。 – zneak