2014-10-31 70 views
8

在我的應用程序中,我檢查是否有帖子有圖片。意外地發現零,同時展開可選值

對於這個我使用:

if pictures[string]? != nil { 
    if var image: NSData? = pictures[string]? { 
     imageView.image = UIImage(data: image!) 
    } 
} 

但是,它仍然想出了錯誤:

fatal error: unexpectedly found nil while unwrapping an Optional value.

我敢肯定,這是一些容易解決,但我很新的這 - 我做錯了什麼?

+0

可能的重複o f [什麼是「致命錯誤:意外地發現零,而解包可選值」是什麼意思?](http://stackoverflow.com/questions/32170456/what-does-fatal-error-unexpectedly-found-nil-while-unwrapping -an-optional-valu) – Hamish 2016-05-16 12:33:29

回答

14

嘗試做這種方式:

if let imageData = pictures[string] { 
    if let image = UIImage(data: imageData) { 
     imageView.image = image 
    } 
} 

假設string是一個有效的關鍵。

您正在處理可選項,因此在使用它之前有條件地解開每個返回對象。

強制展開是危險的,只能在您使用時才使用絕對確定可選項包含值。您的imageData可能無法以正確的格式創建圖像,但無論如何您都會強制展開圖像。在Objective-C中可以做到這一點,因爲它只是意味着nil對象會被傳遞。斯威夫特並不那麼寬容。

+0

謝謝:)現在工作! – 2014-10-31 13:29:13

1

這是迅速的,當你忘了包可選值

imageView?.image = UIImage(data: image!)

0

我用這個代碼

if(!placeholderColor.isEqual(nil)) 
{ 
    self.attributedPlaceholder = NSAttributedString(string: self.placeholder!, attributes: [NSForegroundColorAttributeName : placeholderColor]) 
} 

面臨着同樣的問題,更換線路imageView.image = UIImage(data: image!) 並以此解決的問題

if let placeColor = placeholderColor 
{ 
    self.attributedPlaceholder = NSAttributedString(string: self.placeholder!, attributes: [NSForegroundColorAttributeName : placeColor]) 
} 
相關問題