2012-11-10 1 views
15

Я работаю с UITableview. Я показываю изображение, название, дату и местоположение на ячейке tableview. Когда я нажимаю на ячейку tableview, будет перемещаться к деталям view.in в непрерывном режиме tableview для подробного просмотра и наоборот. После некоторых навигаций мое приложение становится аварийным, когда я нажимаю на ячейку UITableview.- [__ NSPlaceholderArray initWithObjects: count:]: попытаться вставить объект nil из объектов [0] '

+1

Пожалуйста, разместите свой код, чтобы мы могли вам помочь. –

ответ

26

NSArray предназначен для хранения объектов для каждого элемента - nil никогда не будет действительным значением ни в одном NSArray.

Ошибка указывает на то, что ваша программа создает массив с ненулевой длиной и что первый элемент равен нулю.


Hunch: Вы объявили буквальное, нечто эквивалентное:

NSNumber * n = nil; 
NSArray * a = @[n]; // << runtime error creating this array 

Конечно, ваша программа, а не могли бы называть -[NSArray initWithObjects:count:] непосредственно.

0

Лучший способ избежать подобных сбоев - использовать NSSet, который может принимать аргументы nil, а затем вы используете «[someSet allObjects]», который даст вам «очищенный от значений nil values» массив.

Кроме того, я принял идею сделать макрос, чтобы сократить создание набора. (Источник: Objective C literals for NSSet and NSOrderedSet?)

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