Использование «replaceObjectAtIndex» для массива в массиве - PullRequest
5 голосов
/ 18 марта 2011

У меня есть массив в (изменяемый) массив.Я пытаюсь заменить некоторые объекты на «replaceObjectAtIndex».

Я пытался:

[[mutableArrayName objectAtIndex:0]replaceObjectAtIndex:0 withObject:@"TEST"]; 

, но я получаю следующую ошибку:

- [__ NSArrayI replaceObjectAtIndex: withObject:]: нераспознанный селектор отправлен в экземпляр 0x4e24d70 2011-03-17 17: 02: 07.008 Контактная информация [5145: 207] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [__ NSArrayI replaceObjectAtIndex: withObject:]: нераспознанный селектор, отправленный экземпляру 0x4e24d70 '

Я также пытался это сделать:

    [mutableArrayName replaceObjectAtIndex:[[mutableArrayName objectAtIndex:0]objectAtIndex:0] withObject:@"TEST"];

, но я получаю следующую ошибку:

*Завершение работы приложения из-за необработанного исключения «NSRangeException», причина: «* - [NSMutableArray replaceObjectAtIndex: withObject:]: индекс 16660 за пределами [0 .. 0] '

Ответы [ 2 ]

5 голосов
/ 18 марта 2011

2-й подход основан на том, чтобы вместо 2 иметь 3 массива. 1-й подход кажется нормальным, но я полагаю, что у вас есть NSArray внутри NSMutableArray, потому что NSArray:replaceObjectAtIndex:withObject не существует.Поэтому убедитесь, что все массивы являются изменяемыми.

2 голосов
/ 18 марта 2011

Итак, насколько я понял, у вас есть: изменяемый массив, и внутри него у вас есть больше массивов. Теперь вы хотите получить один из этих «подмассивов» и изменить его.

В этом случае первая попытка является правильной, за исключением того, что в вашем NSMutableArray есть NSArray экземпляра. И вы не можете изменить их, следовательно, исключение. Так что вам нужно убедиться, что вы набиваете NSMutableArrays внутри вашего внешнего NSMutableArray. Тогда вызов вашей первой попытки будет успешным.

...