首页 文章

使用Decodable协议在init中解析json

提问于
浏览
-2

我想在我的模型的init中解析json文件 . 我希望它获取URL并初始化所有存储的属性 . 喜欢:

init(from url: URL) { ... }

所以问题是我该怎么办?我试着这样做:

let info = try JSONDecoder().decode(Model.self, from: data)

但它只是创造了一个新的对象,似乎是一个糟糕的决定 .

谢谢 .

1 回答

  • 0

    我用你想要的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
            }
        }
    }
    

相关问题