使用JSONEncoder编码类型为Codable的变量
我设法同时使用JSON和plist编码和解码,但是只能通过直接在特定对象上调用encoding / decode函数来实现。
例如:
struct Test: Codable { var someString: String?
}
let testItem = Test()
testItem.someString = "abc"
let result = try JSONEncoder().encode(testItem)
这很好,没有问题。
但是,我试图获得一个仅接受Codable
协议一致性作为类型并保存该对象的函数。
func saveObject(_ object: Encodable, at location: String) { // Some code
let data = try JSONEncoder().encode(object)
// Some more code
}
这将导致以下错误:
无法使用类型为“(可编码)”的参数列表调用“编码”
看一下encoding函数的定义,似乎它应该能够接受Encodable
,除非Value
是我不知道的某种奇怪的类型。
open func encode<Value>(_ value: Value) throws -> Data where Value : Encodable
回答:
使用限制为 Encodable
func saveObject<T : Encodable>(_ object: T, at location: String) { //Some code
let data = try JSONEncoder().encode(object)
//Some more code
}
以上是 使用JSONEncoder编码类型为Codable的变量 的全部内容, 来源链接: utcz.com/qa/403458.html