問題タブ [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.

0 投票する
1 に答える
263 参照

swift - クラスを辞書ではなく単一の値にエンコードする

クラスを考えると:

私は手に入れたい:

いいえ

これがデフォルトです。MasterClass でエンコード関数と CodingKeys をスローできることはわかっていますが、他に 20 個の変数があり、19 個のキーを追加する必要があります。ComplementApp で CodingKeys を実装してこれを達成できますか?

0 投票する
2 に答える
2115 参照

swift - Swift の Encodable に準拠するジェネリック プロパティを持つ構造体

私は、構造体で、型が実行時に次のように定義される汎用プロパティを持つ方法を探していました。

これが役立つ単純な使用例は、jsonオブジェクトを構築する場合です。Anodeは 、 、 、配列などにすることができますがintstring変更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-erasuregenerics

#0 (タイプ消去)

#1 (型消去 + ジェネリック)

どちらのアプローチでも適切な結果が得られます。

scalable結果が同じであったとしても、より多くのタイプを考慮に入れれば、アプローチ #1 が有効であると強く信じていますが、追加されたタイプごとに 2 つの異なる領域で変更を加える必要があります。

これを達成するためのより良い方法があると確信していますが、まだ見つけることができませんでした。それについての考えや提案を聞いてうれしいです。


編集 #0 2020/02/08: オプション値

ロブのすばらしい答えを使用して、次のvalueようにオプションにできるようにしようとしています。

この時点で、Tこれ以上推論できず、次のエラーがスローされます。

Optionalタイプが に与えられた場合、次の結果を与えるロブの答えを使用する可能性を探していますvalue:

編集 #1 2020/02/08: 解決策

valueさて、私は値を与えることに集中していたので、推論エラーの原因となる型がnilないことに気づきませんでした。nil

オプションのタイプを指定すると、機能します。

0 投票する
2 に答える
1056 参照

swift - Swift 5で列挙型をデコードする - これは難しいことではありません

私は過去 3 ~ 4 時間、このばかげたものにこの列挙型を正しくデコードさせようとしてきましたが、今ではこれに非常に不満を感じています! json次のような API から返される文字列があります。

THAT を という列挙型にマップしようとしていますContractTypeContractTypeこれは私の列挙型全体です

Codableこれは、プロトコルに準拠させようとした私の拡張機能です。

私は一体何を間違っているのですか!? どんな助けでも大歓迎です!