在 init 中解析 json,使用 Decodable 协议
Parse json in init, using Decodable protocol
我想在模型的初始化中解析 json 文件。我希望它采用 URL 并初始化所有存储的属性。喜欢:
init(from url: URL) { ... }
,
所以问题是我该怎么做?我尝试这样做:
let info = try JSONDecoder().decode(Model.self, from: data)
,
但它只是创建了一个新对象,这似乎是一个错误的决定。
谢谢。
我创建了一个具有您想要的初始化类型的可编码结构:
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
}
}
}
我想在模型的初始化中解析 json 文件。我希望它采用 URL 并初始化所有存储的属性。喜欢:
init(from url: URL) { ... }
,
所以问题是我该怎么做?我尝试这样做:
let info = try JSONDecoder().decode(Model.self, from: data)
,
但它只是创建了一个新对象,这似乎是一个错误的决定。
谢谢。
我创建了一个具有您想要的初始化类型的可编码结构:
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
}
}
}