我想在我的模型的init中解析json文件。我希望它採用URL並初始化所有存儲的屬性。像:在init中解析json,使用可解碼協議
init(from url: URL) { ... }
,
所以問題是,我該怎麼辦呢?我試圖做這樣說:
let info = try JSONDecoder().decode(Model.self, from: data)
,
,但它只是創建一個新的對象,似乎是一個錯誤的決定。
謝謝。
我想在我的模型的init中解析json文件。我希望它採用URL並初始化所有存儲的屬性。像:在init中解析json,使用可解碼協議
init(from url: URL) { ... }
,
所以問題是,我該怎麼辦呢?我試圖做這樣說:
let info = try JSONDecoder().decode(Model.self, from: data)
,
,但它只是創建一個新的對象,似乎是一個錯誤的決定。
謝謝。
我創建了那種你想要的init可編碼結構:
struct NameObject: Codable {
let id: Int
let name: String
enum CodingKeys: String, CodingKey {
case id
case name
}
init(id: Int, name: String) {
self.id = id
self.name = name
}
init(withData data: Data) {
do {
self = try JSONDecoder().decode(NameObject.self, from: data)
} catch {
self.id = 0
self.name = "unknown"
// error
}
}
}
數據刪除了嗎嘗試抓住並使你的初始投擲。創建一個無用的對象沒有任何意義 –
Btw你的編碼鍵枚舉是多餘的(毫無意義的) –
Btw爲什麼你會發現錯誤,如果你不會使用它。更好地做出錯誤的初始化程序 –
自我=嘗試JSONDecoder ... –
順便說一下你的初始化將需要拋出更好,而不是使用網址 –