Странная фатальная ошибка: неожиданно обнаружен ноль при разворачивании необязательного значения

У меня в ViewController 6x UIImageView. У меня также есть назначенные им жесты касания. Когда пользователь касается изображения, выполняется переход.

Я добавляю эти ImageViews в массив, и здесь происходит сбой приложения:

@IBOutlet weak var p0: UIImageView!
@IBOutlet weak var p1: UIImageView!
@IBOutlet weak var p2: UIImageView!
@IBOutlet weak var p3: UIImageView!
@IBOutlet weak var p4: UIImageView!
@IBOutlet weak var p5: UIImageView!

var playlistArray: [UIImageView] = []

override func viewDidLoad() {
    super.viewDidLoad()

    playlistArray += [p0, p1, p2, p3, p4, p5] // App crashes here

    for index in 0..<playlistArray.count {
        let playlist = Playlist(index: index)
        let playlistImageView = playlistArray[index]

        playlistImageView.image = playlist.icon
        playlistImageView.backgroundColor = playlist.backgroundColor
    }
}

Я получаю сообщение об ошибке:

fatal error: unexpectedly found nil while unwrapping an Optional value

Что я делаю неправильно? Все ImageViews подключены.

Имейте в виду, я следую руководству, в котором код практически такой же, поэтому метод добавления ImageView в массив - это курс для начинающих.

Я установил точки останова и уверен, что ни один из ImageView равен нулю.
Они все правильно подключены.

Редактировать:

Я загрузил свой проект. Если у кого-то есть момент, я был бы признателен посмотреть, что там может быть не так: https://www.dropbox.com/s/fj0tgi9st2xr7y5/s_PlaylistBrowser.zip?dl=0


person Community    schedule 22.02.2015    source источник
comment
Установите точку останова на этой строке и убедитесь, что все представления изображений не равны нулю - я предполагаю, что по крайней мере одно не подключено.   -  person Antonio    schedule 22.02.2015
comment
@Antonio, убедитесь, что все * imageViews?   -  person Ayush Goel    schedule 22.02.2015
comment
Один или несколько из [p0, p1, p2, p3, p4, p5] равны нулю. Скорее всего, это связано с тем, что они на самом деле не подключены должным образом, или, возможно, потому, что у вас есть код в другом месте, который устанавливает одно или несколько из них в ноль.   -  person Clafou    schedule 22.02.2015


Ответы (2)


Я просмотрел ваш код.
В основном вы пропустили соединение с меткой в ​​DetailsViewController.
Из-за этого программа вылетала из строя, только когда вы пытались выполнить переход.
Я не знаю, почему он указывал в той строке, которую вы упомянули.

person Fengson    schedule 22.02.2015

Вы писали: «Что я делаю не так? Все ImageView подключены».

Это ошибка новичка. Возникла проблема, и вы предполагаете, что все сделали правильно. Но должно быть здравым смыслом, что вы не все сделали правильно - если вы это сделаете, ваш код будет работать!

Вопрос, который вы должны задать себе автоматически: я сделал что-то не так. Что я сделал не так? Если бы вы задали себе этот вопрос, то с точки сбоя и сообщения об ошибке было бы очевидно, что одно из значений p0, p1, p2, p3, p4 или p5 равно нулю.

person gnasher729    schedule 22.02.2015