- [__ NSPlaceholderArray initWithObjects: count:]: попытка вставить нулевой объект из объектов [0] '
Я работаю с UITableview. Я показываю изображение, название, дату и местоположение в ячейке tableview. Когда я нажимаю на ячейку tableview, он будет перемещаться к деталям view.in в непрерывном режиме tableview для подробного просмотра и наоборот. После некоторых навигаций мое приложение становится аварийным, когда я нажимаю на ячейку UITableview.
Ответы
Ответ 1
NSArray
предназначен для хранения объектов для каждого элемента - nil
никогда не является допустимым значением в любом индексе NSArray
.
Ошибка указывает на то, что ваша программа создает массив с ненулевой длиной и что первый элемент равен нулю.
Hunch: вы объявили литерал, что-то эквивалентное:
NSNumber * n = nil;
NSArray * a = @[n]; // << runtime error creating this array
Конечно, ваша программа могла вместо этого напрямую звонить -[NSArray initWithObjects:count:]
.
Ответ 2
Лучший способ избежать подобных сбоев - использовать NSSet, который может принимать аргументы nil, а затем вы используете "[someSet allObjects]", который даст вам "очищенный от значений nil values" массив.
Кроме того, я взял идею сделать макрос, чтобы сократить создание набора. (Источник: Объективные C-литералы для NSSet и NSOrderedSet?)