【发布时间】:2018-04-19 18:15:52
【问题描述】:
这是我的类层次结构:
class Parent {
var name: String
var age: Int
init(dict: [String: Any]) {
age = dict["age"] as! Int
}//ERROR: "Return from initializer without initializing all stored properties"
}
class Child: Parent {
var school: String
override init(dict: [String: Any]) {
school = dict["school"] as! String
super.init(dict: dict)
name = dict["childname"] as! String
}
}
如果我在 Parent 初始化器中初始化 name 属性,那么它可以工作,但在我的情况下,我希望它只在 Child 中初始化。
有什么办法可以解决吗?
附: Parent 中有很多属性,例如 name 这些应该在 Child 中初始化
【问题讨论】:
-
这没有意义,创建Parent对象必须初始化所有属性。如果
name仅存在于 Child 中,则使其成为 Child 的属性。 -
绝对没有办法达到你想要的。 init 方法必须初始化所有成员。
标签: swift initialization optional