swift - 父类(super class)中的选项导致子类初始化程序出现问题

标签 swift xcode option-type

我有以下代码:

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/

相关文章:

ios - 标题下方 NavigationBar 上的 UiSegmentedControl

ios - 由于未捕获的异常而终止应用程序,原因 : 'ERROR: UIScrollView does not support multiple observers implementing

objective-c - 自定义表格单元格 iOS 6

ios - 3D触摸: unexpectedly found nil while unwrapping an Optional value

ios - 自定义 UIView 标签和动画未显示在 View Controller 中

swift - 在 Swift 4 中设置 SKSpriteNode 的位置

ios - 无法在 Swift 中调整多个设备上的布局

java - Java 中是否有标准的 Option 或 Nullable 类?

java - 添加两个 Optional<BigDecimal> 数字的最优雅方法是什么

ios - Swift Action 扩展 NSString 错误?