代码之家  ›  专栏  ›  技术社区  ›  Horay

创建一个没有初始值的NSTimeInterval变量会给我一个错误

  •  -1
  • Horay  · 技术社区  · 9 年前

    我试图创建一个变量 NSTimeInterval 而不在初始化时分配值。

    var elapsedTime : NSTimeInterval
    

    即使没有在代码中使用它,我也会在类中遇到错误:

    类“myClassName”没有初始值设定项

    它建议我增加一个值 0.0 elapsedTime 。我一开始不想给它增加任何价值。我做错了什么,我能做什么来纠正它?

    1 回复  |  直到 9 年前
        1
  •  3
  •   newacct    9 年前

    非可选类属性必须具有默认值或在 init 方法。

    使用默认值:

    class Foo {
        var bar: NSTimeInterval = 3.14
    }
    

    正在中初始化 初始化 :

    class Foo {
        var bar: NSTimeInterval
        init(timeInterval: NSTimeInterval) {
            self.bar = timeInterval
        }
    }
    

    作为可选选项:

    class Foo {
        var bar: NSTimeInterval?
    }
    

    如果属性是可选的,则允许 nil 因此不需要在初始化完成之前分配值。

    如果属性是非可选的,则必须在初始化的第一阶段使用某种方法获取值,否则,类的实例将被初始化为Swift无法协调的无效状态(没有赋值的非可选属性)。

    在某种程度上,这与整个“在展开可选属性时意外发现nil”的错误是一样的,只是这个错误可以在编译时被捕获,并且当您的类无法为非可选属性提供非nil值时,Xcode将阻止代码的编译。