【发布时间】:2017-10-04 12:15:20
【问题描述】:
我想创建类型为 Codable 的变量。稍后在 JSONEncoder 类中使用它。我认为下面的代码应该可以正常工作,但它给了我错误:
无法使用
(Codable)类型的参数列表调用encode。
如何声明 JSONEncoder 将正确使用的可编码变量?
struct Me: Codable {
let id: Int
let name: String
}
var codable: Codable? // It must be generic type, but not Me.
codable = Me(id: 1, name: "Kobra")
let data = try? JSONEncoder().encode(codable!)
Here 是类似的问题,如何使用函数传递 Codable。但我正在寻找如何使用变量(类变量)设置 Codable。
【问题讨论】:
-
使用
Any而不是Codable -
@LeoDabus 那么另一个问题是如何将它传递给 JSONEncoder?
-
使用
Me有什么问题? -
我仍然认为它是重复的。重新开放可能不会有什么不同。我将在此处发布链接作为参考stackoverflow.com/questions/45053060/…
-
@Ramis 这是不可能的——
JSONEncoder和JSONDecoder需要具体类型,而Codable不是(类型为Codable?的变量称为 existential)。你能在这里展示你的用例吗?这个变量还能包含什么?
标签: json swift swift4 swift-protocols