【发布时间】:2015-10-13 15:45:15
【问题描述】:
这是我想要编译的代码示例:
class Fruit {
var name: String
init(name: String, season: String) {
self.name = name
}
convenience init?(data: [String: String]) {
if let name = data["name"], region = data["region"] {
self.init(name: name, season: region)
}
}
}
编译器错误是“在调用 self.init 之前委托初始化程序中使用 'self'”
如果初始化程序失败,我是否应该能够拥有不运行任何初始化程序的代码路径?如果您添加带有初始化程序的 else,则此代码将编译:
convenience init?(data: [String: String]) {
if let name = data["name"], region = data["region"] {
self.init(name: name, season: region)
} else {
self.init(name: "test", season: "test")
}
}
【问题讨论】:
标签: swift