我设法让JSON和plist编码和解码都能工作,但只能通过直接调用特定对象上的encode/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
}
这会导致以下错误:
无法使用类型为"(Encodable)"的参数列表调用"encode"
看看encode函数的定义,它似乎应该可以接受Encodable
,除非Value
是我不知道的奇怪类型.
open func encode<Value>(_ value: Value) throws -> Data where Value : Encodable