我想在我的模型的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 ... –
顺便说一下你的初始化将需要抛出更好,而不是使用网址 –