致命错误:在解包可选值时意外发现nil
使用以下代码:
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结果为零。
答案 0 :(得分:4)
删除?
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
的情况下才会发生。