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