問題タブ [encodable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - クラスを辞書ではなく単一の値にエンコードする
クラスを考えると:
私は手に入れたい:
いいえ
これがデフォルトです。MasterClass でエンコード関数と CodingKeys をスローできることはわかっていますが、他に 20 個の変数があり、19 個のキーを追加する必要があります。ComplementApp で CodingKeys を実装してこれを達成できますか?
swift - Swift の Encodable に準拠するジェネリック プロパティを持つ構造体
私は、構造体で、型が実行時に次のように定義される汎用プロパティを持つ方法を探していました。
これが役立つ単純な使用例は、json
オブジェクトを構築する場合です。Anode
は 、 、 、配列などにすることができますがint
、string
変更bool
可能な型を除けば、オブジェクトnode
は同じままです。
少し考えて使用に失敗した後protocols
(通常のエラーが発生しました)、2 つの異なる解決策をprotocol 'X' can only be used as a generic constraint because it has Self or associated type requirements
思いつきましtype erasure
た。type-erasure
generics
#0 (タイプ消去)
#1 (型消去 + ジェネリック)
どちらのアプローチでも適切な結果が得られます。
scalable
結果が同じであったとしても、より多くのタイプを考慮に入れれば、アプローチ #1 が有効であると強く信じていますが、追加されたタイプごとに 2 つの異なる領域で変更を加える必要があります。
これを達成するためのより良い方法があると確信していますが、まだ見つけることができませんでした。それについての考えや提案を聞いてうれしいです。
編集 #0 2020/02/08: オプション値
ロブのすばらしい答えを使用して、次のvalue
ようにオプションにできるようにしようとしています。
この時点で、T
これ以上推論できず、次のエラーがスローされます。
Optional
タイプが に与えられた場合、次の結果を与えるロブの答えを使用する可能性を探していますvalue
:
編集 #1 2020/02/08: 解決策
value
さて、私は値を与えることに集中していたので、推論エラーの原因となる型がnil
ないことに気づきませんでした。nil
オプションのタイプを指定すると、機能します。
swift - Swift 5で列挙型をデコードする - これは難しいことではありません
私は過去 3 ~ 4 時間、このばかげたものにこの列挙型を正しくデコードさせようとしてきましたが、今ではこれに非常に不満を感じています! json
次のような API から返される文字列があります。
THAT を という列挙型にマップしようとしていますContractType
。ContractType
これは私の列挙型全体です
Codable
これは、プロトコルに準拠させようとした私の拡張機能です。
私は一体何を間違っているのですか!? どんな助けでも大歓迎です!