我尝试创建NSTimeInterval
变量,而不是在初始化时指定值。
var elapsedTime : NSTimeInterval
即使根本没有在代码中使用它,我在课堂上收到错误:
Class' myClassName'没有初始化者
它建议我将0.0
的值添加到elapsedTime
。我一开始并不想为它添加任何价值。我做错了什么,我该怎么做才能解决它?
答案 0 :(得分:3)
非可选类属性必须具有默认值或在init
方法中初始化。
使用默认值:
class Foo {
var bar: NSTimeInterval = 3.14
}
在init
中初始化:
class Foo {
var bar: NSTimeInterval
init(timeInterval: NSTimeInterval) {
self.bar = timeInterval
}
}
作为选择:
class Foo {
var bar: NSTimeInterval?
}
如果属性是可选的,则允许它为nil
,因此在初始化完成之前不需要分配值。
如果属性是非可选的,如果必须在初始化的第一阶段有一些获取值的方法,否则,类的实例将被初始化为Swift无法协调的无效状态(非可选)没有指定价值的财产。)
在某种程度上,它与整个"在打开一个可选的"时出乎意料地发现nil相同的错误,除了这个可以在编译时捕获并且Xcode将阻止编译当你的班级没有办法为你的非可选属性提供非零值时的代码。