Создание переменной NSTimeInterval без начального значения дает мне ошибку

Я пытаюсь создать вар NSTimeInterval без присвоения значения во время инициализации.

var elapsedTime : NSTimeInterval

Даже не используя его в коде, я получаю сообщение об ошибке в классе:

Класс 'myClassName' не имеет инициализаторов

и это предполагает, что я добавлю значение 0.0 в elapsedTime, Я не хочу добавлять какую-либо ценность к этому вначале. Что я делаю не так, и что я могу сделать, чтобы это исправить?

1 ответ

Решение

Необязательные свойства класса должны иметь значение по умолчанию или быть инициализированы в вашем 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 не может согласовать (необязательное свойство без назначенное значение).

В некотором смысле, это такая же ошибка, как и все "неожиданно найденный ноль при развертывании необязательного", за исключением того, что этот может быть перехвачен во время компиляции, и XCode предотвратит компиляцию кода, когда у вашего класса нет средств предоставляя вашему не необязательному свойству ненулевое значение.

Другие вопросы по тегам