2017-01-22 25 views
-1

我有以下code.I我试图声明一个“名称”常量作为可选的,但是它不允许它给误差无法在swift中声明常量为可选项?

存储的属性“名”无初始值阻止合成 初始化

class VideoMode { 

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

编辑:为什么我收到这样的错误在结构的情况下,它不会给任何错误

+4

一个。 – vadian

+1

我投票结束这个问题作为题外话,因为它只是太东西或其他 – matt

+0

@matt,“太东西或其他?”大声笑。太愚蠢了,也许? –

回答

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

你必须写像这个 -

var name = String() 
0

你可以这样做。

使文本可选。

var text: String? 

给文本“零”恒永不会改变是无意义的默认值

var text: String = ""