无法推断出通用参数“T”
在线:让data = try encoder.encode(obj)
这是代码
import Foundationstruct User: Codable { var firstname: String var lastname: String}let u1 = User(firstname: "Ann",lastname: "A")let u2 = User(firstname: "Ben",lastname: "B")let u3 = User(firstname: "CharlIE",lastname: "C")let u4 = User(firstname: "DavID",lastname: "D")let a = [u1,u2,u3,u4]var ret = [[String: Any]]()for i in 0..<a.count { let param = [ "a" : a[i],"b" : 45 ] as [String : Any] ret.append(param)}let obj = ["obj": ret]let encoder = JsONEncoder()encoder.outputFormatting = .prettyPrintedlet data = try encoder.encode(obj) // This line produces an errorprint(String(data: data,enCoding: .utf8)!)
我究竟做错了什么?
该消息具有误导性,真正的错误是obj的类型为[String:Any],它不符合Codable,因为Any没有.当你想到它时,Any永远不会符合Codable.当Swift可以是整数,字符串或对象时,Swift会用什么来存储JsON实体?您应该定义一个适当的结构来保存您的数据.
总结以上是内存溢出为你收集整理的Swift 4:使用Codable`通用参数’T’无法推断全部内容,希望文章能够帮你解决Swift 4:使用Codable`通用参数’T’无法推断所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)