これが私のコードです。しかし、値を何に設定するのかわかりません。実際の構造はこの例よりも少し複雑なので、手動で行う必要があります。
助けてください?
struct Something: Decodable {
value: [Int]
enum CodingKeys: String, CodingKeys {
case value
}
init (from decoder :Decoder) {
let container = try decoder.container(keyedBy: CodingKeys.self)
value = ??? // < --- what do i put here?
}
}
いくつかのミスやタイプミスのために、コードがコンパイルされません。
Int
writeの配列をデコードするには
struct Something: Decodable {
var value: [Int]
enum CodingKeys: String, CodingKey {
case value
}
init (from decoder :Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
value = try container.decode([Int].self, forKey: .value)
}
}
ただし、質問のサンプルコードが構造体全体を表している場合は、
struct Something: Decodable {
let value: [Int]
}
初期化子とCodingKeys
を推測できるためです。
ジョシュア・ノッツィのヒントをありがとう。 Intの配列をデコードするために実装する方法は次のとおりです。
let decoder = JSONDecoder()
let intArray = try? decoder.decode([Int].self, from: data)
手動でデコードすることなく。
または、汎用的に実行できます。
let decoder = JSONDecoder()
let intArray:[Int] = try? decoder.decode(T.self, from: data)