2012-06-21 3 views
0

На моем viewDidLoad Я загружаю из webservice первые 5 элементов массива и кладу их на NSMutableArray. Также в этом представлении у меня есть UITableViewController, который отображает элементы моего NSMutableArray с содержимым веб-сервиса. Когда я перехожу к последнему элементу UITableView, я загружаю 5 следующих элементов из webservice и добавляю их в свой NSMutableArray и перезагружая данные таблицы, чтобы отобразить все 10 элементов.Неизменяемый NSMutableArray

Проблема заключается в том, что, когда я пытаюсь добавить в существующие NSMutableArray 5 новых объектов из WebService программа вылетает с сообщением: Exception: -[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object

так, как я получить доступ к NSMutableArray в cellForRowAtIndexPath:, как это:

cell.textLabel.text = [[self.myMutableArray objectAtIndex:indexPath.row]objectForKey:@"name"]; 

Любая идея о том, что это может быть?

+0

Можете ли вы вставить объявление своего свойства myMutableArray? – Francesco

+1

, пожалуйста, покажите код, как вы инициализируете массив :-) –

+4

Я предполагаю, что у вас нет NSMutableArray, но простой NSArray. Просто потому, что указатель называется «изменчивым», не делает объект изменчивым. –

ответ

3

Прежде всего, обратите внимание на предупреждения в вашем компиляторе. Вероятно, вы назначаете NSArray переменной NSMutableArray. Это часто вызывает предупреждение. У вашей сборки не должно быть никаких предупреждений. Это очень важно для кода ObjC (многие вещи, которые вы считаете «ошибками», являются только предупреждениями в ObjC). Если вы игнорируете предупреждения, тогда у вас будет много проблем.

Вы можете иметь эту ситуацию, не создавая предупреждение, если что-то отлито до id. Например, если вы извлекли свой «NSMutableArray» (действительно NSArray) из массива или словаря, вы не получите предупреждение о несоответствии типа. Ищите эти ситуации. В основном, проверяйте каждую точку, которую вы назначаете myMutableArray, и убедитесь, что вы фактически назначаете изменяемый массив.

+0

Я устанавливал результат вызова webservice непосредственно на nsmutablearray. Теперь я выделил и инициализировал его первым, а затем добавил объекты один за другим, и он работал нормально. Большое спасибо! :) –

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