假设:
struct Foo {
let bar: Bar
}
我使用了一个方便的初始化程序:
let foo = Foo(bar: Bar())
但如果Bar
本身不是Codable
,或者由于某些其他原因我需要在Codable
上明确实现Foo
,那么便利成员初始值设定为否更长的礼物:
struct Foo: Codable {
init(from decoder: Decoder) throws {
}
func encode(to encoder: Encoder) throws {
}
let bar: Bar
}
我得到:
let foo = Foo(bar: Bar())
通话中的参数标签不正确(有'栏:',预期'来自:')
这里可以兼顾两全其美吗?
答案 0 :(得分:12)
您可以在扩展程序中实现Codable
一致性。
在扩展中添加任何struct初始值设定项时,不会删除成员初始值设定项。
struct MyStruct {
var name: String
}
extension MyStruct: Codable {} // preserves memberwise initializer
MyStruct(name: "Tim")