为什么我们不需要ViewController.swift
文件中任何类内的可选属性的初始化程序?
class SpareParts {
var wheels: Int8?
var engine: String?
}
但是如果类的属性是非可选的,我们立即需要一个init()方法:
帮助表示感谢!
答案 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