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

时间:2019-08-23 11:02:26

标签: ios swift jsonencoder

我有一个正常运行的应用程序的git存储库,可在iTunes上使用。我最近想为其添加一些更新,并将该项目导入到xCode 10中。当我尝试构建解决方案时,出现错误“无法推断出通用参数'T'”

我尝试更新所有正在使用的Pod。

这是有错误的代码

static func toJSON<T>(_ data: [T]) -> NSArray {
    let encoded = try! JSONEncoder().encode(data)
    let jsonObject = try! JSONSerialization.jsonObject(with: encoded,
                                                       options: []) as! NSArray
    return jsonObject
}

并且错误似乎在此行上出现

let encoded = try! JSONEncoder().encode(data)

我对Swift还是很陌生,只继承了这个项目,所以我不确定解决这个问题应该采取什么方法。我浏览了其他问题,但找不到适合我的解决方案。

1 个答案:

答案 0 :(得分:0)

通用参数T必须限制为Encodable,请使用 swiftier 代码和throw潜在错误

static func toJSON<T : Encodable>(_ data: [T]) throws -> [Any] {
    let encoded = try JSONEncoder().encode(data)
    return try JSONSerialization.jsonObject(with: encoded) as! [Any]
}