2016-02-12 72 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

相關問題