Ноль при развертывании необязательного значения Ошибка
фатальная ошибка: неожиданно найден ноль при развертывании необязательного значения
Со следующим кодом:
weak var previewBlurView : UIVisualEffectView?
func blurPreviewWindow() {
if (self.previewBlurView == nil) {
var blurEffect: UIVisualEffect
blurEffect = UIBlurEffect.init(style: UIBlurEffectStyle.Dark)
self.previewBlurView? = UIVisualEffectView(effect: blurEffect)
self.previewView.addSubview(self.previewBlurView?)
self.previewBlurView!.frame = self.previewView.bounds
}
self.previewBlurView?.alpha = 0.0
UIView.animateWithDuration(0.2, delay: 0.0, options: [.BeginFromCurrentState, .CurveEaseOut], animations: {() -> Void in
self.previewBlurView?.alpha = 1.0
}, completion: { _ in })
}
Я получаю аварию на линии:
self.previewView.addSubview(self.previewBlurView?)
НОТА
Оказалось, что все представления были нулевыми из-за внешней проблемы экземпляра контроллера представления, не относящегося к надлежащему. Так что в этом случае self.previewBlurView оказался нулевым.
1 ответ
Удалить ?
в назначении self.previewBlurView
:
self.previewBlurView = UIVisualEffectView(effect: blurEffect)
В противном случае происходит то, что назначение происходит только тогда, когда self.previewBlurView
на самом деле неnil
в начале, что это не так, потому что вы находитесь в процессе назначения чего-то для него.
Сравните следующее:
var a : Int? = 12
a? = 13
print(a)
var b : Int?
b? = 13
print(b)
Какие отпечатки
Дополнительно (13)
ноль
Назначение b? = 13
происходит только если b
не является nil
что это, к сожалению,