Swift类中的可选属性不需要初始值设定项
为什么Swift类中的可选属性不需要初始值设定项,swift,viewcontroller,initializer,Swift,Viewcontroller,Initializer,为什么ViewController.swift文件中的任何类内的可选属性都不需要初始值设定项 class SpareParts { var wheels: Int8? var engine: String? } 但是,如果类的属性是非可选的,我们立即需要一个init()方法: 对于可选属性,我们不需要初始值设定项 由于它的默认值为nil,因此重新对非可选属性进行分级不能是这样,因此您必须使用init分配一个值,或者得到一个编译时错误,就像您当前拥有的可选属性类型: 如果自定义
ViewController.swift
文件中的任何类内的可选属性都不需要初始值设定项
class SpareParts {
var wheels: Int8?
var engine: String?
}
但是,如果类的属性是非可选的,我们立即需要一个init()方法:
对于可选属性,我们不需要初始值设定项
由于它的默认值为
nil
,因此重新对非可选属性进行分级不能是这样,因此您必须使用init
分配一个值,或者得到一个编译时错误,就像您当前拥有的可选属性类型:
如果自定义类型的存储属性在逻辑上允许为“无值”-可能是因为在初始化过程中无法设置其值,或者是因为在以后某个时候允许其为“无值”,请使用可选类型声明该属性。可选类型的属性将使用值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
可选属性默认值为
nil
。类具有默认的初始值设定项。如果所有属性都有可选值,则可以使用默认初始值设定项。默认的swift类初始值设定项是什么样子的?这一点目前正在swift论坛上讨论:。因此,没有@EmreCiftci所说的所谓的默认类初始值设定项,对吗?可选的默认值是nil
,因此它将编译,当您访问它时,它将打印nil,而非可选的是,当创建类实例时,应该知道从何处获取它的值