2014-10-31 5 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

ответ

14

Попробуйте сделать это следующим образом:

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

Предполагая, что string является действительным ключом.

Вы имеете дело с опциями, поэтому условно разворачивайте каждый возвращаемый объект перед его использованием.

Принудительная разгрузка является опасной и должна использоваться только в том случае, если вы абсолютно уверены, что необязательное значение содержит значение. Возможно, ваши изображения не могут быть в правильном формате для создания изображения, но вы все равно принудительно разворачиваете его. Это нормально делать в Objective-C, поскольку это просто означает, что объекты nil передаются. Свифт не так терпим.

+0

Спасибо :) Работаем сейчас! –

1

Это вопрос о Свифт, когда вы забыли завернуть дополнительные значения

Заменить строку imageView.image = UIImage(data: image!) с imageView?.image = UIImage(data: image!)

0

я столкнулся с той же проблемой с этим кодом

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

и решить этот

if let placeColor = placeholderColor 
{ 
    self.attributedPlaceholder = NSAttributedString(string: self.placeholder!, attributes: [NSForegroundColorAttributeName : placeColor]) 
} 
Смежные вопросы

 Смежные вопросы