Swift类中的可选属性无需初始化

时间:2019-07-14 10:20:52

标签: swift viewcontroller initializer

为什么我们不需要ViewController.swift文件中任何类内的可选属性的初始化程序?

class SpareParts {
    var wheels: Int8?
    var engine: String?
}

enter image description here

但是如果类的属性是非可选的,我们立即需要一个init()方法:

enter image description here

帮助表示感谢!

2 个答案:

答案 0 :(得分:1)

  

我们不需要用于可选属性的初始化器

因为它的默认值为nil,所以它不能重定非可选值,因此您必须用init分配一个值,否则会出现像当前一样的编译时错误

答案 1 :(得分:1)

可选属性类型:

如果您的自定义类型的存储属性在逻辑上被允许为“无值”(可能是因为在初始化期间无法设置其值,或者因为在以后的某个时候允许其无值),请声明具有可选类型的属性。可选类型的属性会自动使用nil值进行初始化,表明该属性在初始化过程中故意有“无值”的含义。

例如:

class SurveyQuestion {
    var text: String?
    init(text: String) {
        self.text = text
    }
    func ask() {
        print(text)
    }
}

let cheeseQuestion = SurveyQuestion(text: "Do you like cheese?")
cheeseQuestion.ask()
// Prints "Do you like cheese?"
 let cheeseQuestion1 = SurveyQuestion()
cheeseQuestion.ask() 
// Prints nil