鉴于:
struct Foo {
let bar: Bar
}
Run Code Online (Sandbox Code Playgroud)
我得到一个方便的初始化器使用:
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
}
Run Code Online (Sandbox Code Playgroud)
我得到:
let foo = Foo(bar: Bar())
调用中的参数标签不正确(有'bar:',期望'来自:')
是否有可能在这里拥有两全其美?
Pal*_*lle 12
您可以Codable在扩展中实现一致性.
在扩展中添加任何struct初始化程序时,不会删除成员初始值设定项.
struct MyStruct {
var name: String
}
extension MyStruct: Codable {} // preserves memberwise initializer
MyStruct(name: "Tim")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |