我的用例主要是使用字典创建对象:
struct Person: Codable { let name: String }
let dictionary = ["name": "Bob"]
let person = Person(from: dictionary)
我想避免编写自定义实现,并希望尽可能地高效。
最佳答案
目前,我拥有的最佳解决方案是此方法,但是它具有编码/解码的开销。
extension Decodable {
init(from: Any) throws {
let data = try JSONSerialization.data(withJSONObject: from, options: .prettyPrinted)
let decoder = JSONDecoder()
self = try decoder.decode(Self.self, from: data)
}
}
根据问题中的示例,结果将是let person = Person(from: dictionary)
如果您有兴趣选择其他方式,那么这可能会对https://stackoverflow.com/a/46329055/1453346有所帮助关于swift - 使用字典/数组初始化符合Codable的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46327302/