我有以下代码:
class Being {
var age: Int?
}
class Person: Being {
var name: String
enum gender { case male, female }
var gender: gender
init(age: Int, name: String, gender: gender) {
super.init() // Error: Property 'self.name' not initialized at super.init call
super.age = age
self.name = name
self.gender = gender
}
}
但是在调用 super.init()
之前初始化 self.name
会产生另一个错误(self used beefore super.init call)
最佳答案
如果将可选的 age 替换为 var age = 0,您仍然会遇到相同的编译器错误。可能您在更改代码并重新编译之前没有注意到错误。
问题是你必须在调用父类(super class)初始化器之前初始化类的所有属性:
init(age: Int, name: String, gender: gender) {
self.name = name
self.gender = gender
super.init() // Error: Property 'self.name' not initialized at super.init call
super.age = age
}
关于swift - 父类(super class)中的选项导致子类初始化程序出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44487267/