我的用例主要是使用字典创建对象:

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/

10-14 23:07
查看更多