2016-02-12 47 views
-1

fatal error: unexpectedly found nil while unwrapping an Optional value无而展开的可选值错误

有了下面的代码:

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.previewView' is'nil' – Sulthan

+0

即使我分配了不是零的不同视图,我也会得到相同的错误。 – Gizmodo

回答

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) 

它打印

Optional(13)
nil

分配b? = 13只有b不是nil它不幸的是,发生。

+0

即使没有它,我仍然会收到同样的错误。如果我不做self.view.addSubview(self.previewBlurView!),我得到一个错误。 – Gizmodo

+0

@gizmodo你在哪里得到一个错误? – luk2302

+0

self.view.addSubview(self.previewBlurView!)该行给出错误。说“意外地发现零,同时解开可选值”。即使我删除?在任务上,一样。 – Gizmodo

相关问题