使用JSON编码器将types为Codable的variables编码
我设法得到JSON和P列表编码和解码工作,但只能直接调用特定对象的编码/解码function。
例如:
struct Test: Codable { var someString: String? } let testItem = Test() testItem.someString = "abc" let result = try JSONEncoder().encode(testItem)
这工作正常,没有问题。
但是,我想获得一个函数,只接受Codable协议一致性types并保存该对象。
func saveObject(_ object: Encodable, at location: String) { //Some code let data = try JSONEncoder().encode(object) //Some more code }
这会导致以下错误:
无法用types为“(Encodable)”的参数列表调用“encode”
看着编码函数的定义,好像应该可以接受Encodable,除非Value是一些我不知道的奇怪types。
open func encode<Value>(_ value: Value) throws -> Data where Value : Encodable
使用约束到Encodable
的genericstypes
func saveObject<T : Encodable>(_ object: T, at location: String) { //Some code let data = try JSONEncoder().encode(object) //Some more code }