Как добавить два NSMutableArray в Iphone SDK или добавить NSArray с NSMutableArray? - PullRequest
4 голосов
/ 28 сентября 2010

Мне нужно добавить два NSMUtableArray, может кто-нибудь подсказать мне, как это возможно?

Мой код:

NSMutableArray *array1 = [appDelegate getTextList:1];
NSArray *array2 = [appDelegate getTextList:2];
[array1 addObjectsFromArray:array2];//I am getting exception here.

Любая помощь будет высоко ценится.

Спасибо всем, Лакшми.

Ответы [ 2 ]

13 голосов
/ 28 сентября 2010

Что, вероятно, происходит, так это то, что ваш [appDelegate getTestList: 1] фактически не возвращает NSMutableArray, а NSArray. Просто типизировать массив как изменяемый, удерживая указатель на него, как это не будет работать в этом случае, вместо этого используйте:

NSMutableArray *array1 = [[appDelegate getTextList:1] mutableCopy];
NSArray *array2 = [appDelegate getTextList:2];
[array1 addObjectsFromArray:array2];

Или вы могли бы сохранить переменную textList, которая у вас есть в вашем appDelegate, как NSMutableArray. Я предполагаю, что у вас есть NSArray из NSArrays (или их изменяемые версии). Например.

// In the class interface
NSMutableArray *textLists;

// In the function in which you add lists to the array
NSMutableArray *newTextList;
[self populateArray:newTextList]; // Or something like that

[textLists addObject:newTextList];

Примечание: что у вас, вероятно, будет другой рабочий процесс, но я надеюсь, что у вас возникнет идея сохранить фактические списки как NSMutableArrays.

Другое примечание: второй метод БУДЕТ изменить на месте NSMutableArray, который [appDelegate getTextList:1]; возвращает

1 голос
/ 28 сентября 2010

Попробуйте это:

NSMutableArray *result = 
    [[appDelegate getTextList:1] mutableCopy] 
        addObjectsFromArray:[appDelegate getTextList:2]];

Вы получаете исключение, потому что пытаетесь отправить изменяющиеся сообщения в неизменяемый массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...