好的,所以我找到了这个评论:
How to resolve this error? - Class 'ViewController' has no initializers
但是没有人回答这个问题。为什么这行会导致错误:
let nameOfDelegate : protocolName!
但这不是:
var nameOfDelegate : protocolName!
我知道var是一个可变属性,let是一个常量,但是都正在初始化,对吗?
答案 0 :(得分:3)
在Swift中,如果不为变量提供初始值,则默认将其设置为nil。 Swift不提供常量默认值。
答案 1 :(得分:2)
没有init()函数,因此在实例化类时不会初始化这些类成员。但是当实例化该类时,只能初始化一个:一个不变的,因为以后将无法初始化它。因此,请在init()函数中或直接在定义该常量的行上添加一个初始化器。
答案 2 :(得分:0)
它是因为它没有初始化,因为您以后需要给它一个值,所以您将无法使用它,因为它是一个“ let”,因此必须将其设为var,以便以后可以对其进行初始化
但是您可以使用已经从其他地方初始化的值-例如:let appDelegate = UIApplication.shared.delegate