使 class 可编码
Making class codable
我有一个协议,即 Codable 和一个 class,即 Codable :
public protocol SourceListItem: AnyObject, Codable
{
var name: String { get set }
var children: [SourceListItem] { get set }
}
final public class SourceListHeader: Codable
{
var name: String = "Give me a name!"
var children: [SourceListItem] = [SourceListItem]()
}
但是,编译器给我两个错误:
Type 'SourceListHeader' does not conform to protocol 'Decodable'
Type 'SourceListHeader' does not conform to protocol 'Codable'
这是为什么?我无法修复错误,我尝试了很多变体...
问题似乎出在协议上,因为如果我删除它,一切正常。就像编译器没有看到该协议仅适用于 Codable classes.
您需要符合Codable
的具体类型,不能使用符合Codable
的协议。
final public class SourceListHeader<Item: Codable>: Codable {
var name: String = "Give me a name!"
var children = [Item]()
}
我有一个协议,即 Codable 和一个 class,即 Codable :
public protocol SourceListItem: AnyObject, Codable
{
var name: String { get set }
var children: [SourceListItem] { get set }
}
final public class SourceListHeader: Codable
{
var name: String = "Give me a name!"
var children: [SourceListItem] = [SourceListItem]()
}
但是,编译器给我两个错误:
Type 'SourceListHeader' does not conform to protocol 'Decodable'
Type 'SourceListHeader' does not conform to protocol 'Codable'
这是为什么?我无法修复错误,我尝试了很多变体...
问题似乎出在协议上,因为如果我删除它,一切正常。就像编译器没有看到该协议仅适用于 Codable classes.
您需要符合Codable
的具体类型,不能使用符合Codable
的协议。
final public class SourceListHeader<Item: Codable>: Codable {
var name: String = "Give me a name!"
var children = [Item]()
}