2017-12-01 15 views
0
私は次のようなJSONスキーマを解析しようとしてる

ためfailable initialiizer、ポスターは、または、次のように スウィフト復号可能な

{ 
    "poster": {}, 
    "recommends": [] 
} 

マイデコード可能なクラス

である空であってもなくてもよいですポスターをオプションにするにはどうすればいいですか?私は考えていましたが、私は初期化子が必要ですが、デコード可能なのはinitが必要です。

+0

フレームワークとの戦いはしないでください。 'throw'イニシャライザを使用してください。オプションのプロパティは十分です – vadian

+0

イニシャライザを失敗させる方法です。あなたの 'init'がスローすれば' poster'プロパティを 'nil'に設定します。 – creeperspeak

+0

@creeperspeakありがとう、私はこれを完全に考えていた。 – Cory

答えて

0

だから私は試してみる必要がありますか?推奨リストのinit(デコーダから)

public struct RecommendedList: Decodable { 
    public let poster: Poster? 
    public let recommends: [Recommend] 

    enum CodingKeys: String, CodingKey { 
     case poster 
     case recommends 
    } 

    public init(from decoder: Decoder) throws { 
     let container = try decoder.container(keyedBy: CodingKeys.self) 
     poster = try? container.decode(Poster.self, forKey: .poster) 
     recommends = try container.decode([Recommend].self, forKey: .recommends) 
    } 
} 
+3

...または 'decodeIfPresent(...' – vadian

+0

@vadian cool。私はそれについて知らなかった – Cory

関連する問題