无法在swift中将常量声明为可选?

时间:2017-01-22 17:01:18

标签: swift optional

我有以下代码。我正在尝试声明一个'名称'常量为可选,但不允许它给出错误

  

存储的属性' name'没有初始值可以防止合成   初始化

class VideoMode {

    let resolution = Resolution()
    var interlaced = false
    var frameRate:Float = 0.0
    let name: String?
}

编辑:为什么我得到这样的错误,如果结构不会给出任何错误

2 个答案:

答案 0 :(得分:2)

你必须说

var name: String?

您必须为name分配一个值,或者使用初始值设定项init)来初始化name

因此,这是合法的:

class VideoMode {
    let name: String?
    init(name:String) {self.name = name}
}

这是合法的:

class VideoMode {
    let name: String? = "howdy"
}

但这不合法:

class VideoMode {
    let name: String? // compile error
}

原因很明显。如果namelet,并且您没有对其进行初始化,则永远不会设置,因为它是常量。编译器不会让这种愚蠢的情况存在。

答案 1 :(得分:1)

你必须这样写 -

var name = String()