Swift 4:使用Codable`通用参数’T’无法推断

发布时间:2019-10-14 发布网站:大佬教程
大佬教程收集整理的这篇文章主要介绍了Swift 4:使用Codable`通用参数’T’无法推断大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我收到以下错误:

无法推断出通用参数“T”

在线:让data = try encoder.encode(obj)

这是代码

import Foundation

struct 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 = .prettyPrinted
let data = try encoder.encode(obj) // This line produces an error
print(String(data: data,encoding: .utf8)!)

我究竟做错了什么?

解决方法

该消息具有误导性,真正的错误是obj的类型为[String:Any],它不符合Codable,因为Any没有.

当你想到它时,Any永远不会符合Codable.当Swift可以是整数,字符串或对象时,Swift会用什么来存储JSON实体?您应该定义一个适当的结构来保存您的数据.

大佬总结

以上是大佬教程为你收集整理的Swift 4:使用Codable`通用参数’T’无法推断全部内容,希望文章能够帮你解决Swift 4:使用Codable`通用参数’T’无法推断所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ群:277859234,请注明来意。