- [__ 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?)