Загрузка NSMutableArray в UITableViewController с падением панели поиска - iOS5 с ARC - PullRequest
1 голос
/ 18 февраля 2012

Я загружаю NSMutableArray в UITableViewController с панелью поиска в iOS 5. Если я заполняю массив, как показано ниже, и нажимаю на панель поиска, он отлично работает:

[placesOutputArray addObject:@"object1"];
[placesOutputArray addObject:@"object2"];
[placesOutputArray addObject:@"object3"];
[placesOutputArray addObject:@"object4"];

customSearchArray - массив данных, загруженный в UITableView методы делегата.

Но если я заполню массив следующим образом и нажму на строку поиска:

for(int i=0;i<15;i++)
   [placesOutputArray addObject:@"TestContent"];     

Это сбой, когда я нажимаю на строку поиска:

* Завершение работы приложения из-за необработанного исключения «NSRangeException», причина: «* - [__ NSArrayM objectAtIndex:]: индекс 9 за пределами для пустого массива» * Первый вызов стека вызовов: (0x33d9a8bf 0x33fea1e5 0x33ce3b6b 0xa1d1 0x371a39cb 0x371a2aa9 0x3718977b 0x371896c3 0x37189277 0x37184e7b 0x37184bf9 0x37302b013 0x33d0f0xf0d0xf0df0xd0xf0xf0xf0xfd0xf0xf0xf0xf0xd0xf0d0xf

Я видел, что проблема в методе делегата cellForRowAtIndexPath UITableView, поскольку на первом экране отображаются только 9 ячеек. Любое предложение?

Ответы [ 3 ]

1 голос
/ 20 февраля 2012

Решено! Это была проблема, связанная с cellForRowAtIndexPath и изменяемыми объектами. Решено проверить UITableViewCells и сделать изменчивую копию.

0 голосов
/ 18 февраля 2012

Но если я заполню массив следующим образом и нажму на строку поиска:

Я не вижу, как ваш код заполняет тот же массив.Предоставленный вами фрагмент выглядит так, как будто он инициализирует placeOutputArray, а не customSearchArray.Как вы думаете, ответ так прост?

0 голосов
/ 18 февраля 2012

Экземпляры NSArray являются неизменяемыми. Вместо этого используйте NSMutableArray. Чтобы сделать это более очевидным, измените placeOutputArray на NSMutableArray с NSArray и не забудьте выделить для него память соответствующим образом self.placesOutputArray = [NSMutableArray array];

...