Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift类中的可选属性不需要初始值设定项_Swift_Viewcontroller_Initializer - Fatal编程技术网

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,而非可选的是,当创建类实例时,应该知道从何处获取它的值