Как я могу сохранить NSMutableArray в NSMutableArray, чтобы предыдущие данные в NSMutableArray остались прежними? - PullRequest
0 голосов
/ 07 февраля 2011

Я хочу знать, как я могу добавить NSMutableArray в NSMutableArray, чтобы предыдущие данные не потерялись, а новые данные были добавлены в следующие индексы.

Если ты не понимаешь этого, то можешь снова спросить меня, Я оценю правильный ответ.

мой код как ниже

-(void)setArray1:(NSMutableArray *)arrayValueFromNew

{

    self.myArray=arrayValueFromNew;

    myArray2 = [[NSMutableArray alloc] initWithArray:arrayValueFromNew];

    for(int i=0;i<[myArray2 count];i++)
    {
        [myArray addObject:[myArray2 objectAtIndex:i]];
    }

}

Ответы [ 4 ]

0 голосов
/ 07 февраля 2011

Похоже, вы просто хотите новую копию старого массива. Для этого есть удобная функция

NSMutableArray *newArray = [oldArray mutableCopy];

Помните, что вы использовали копию при получении этого массива, поэтому вы несете ответственность за управление памятью newArray

EDIT

Что делает ваш код?

-(void)setArray1:(NSMutableArray *)arrayValueFromNew                      //1

{

    self.myArray=arrayValueFromNew;                                       //2

    myArray2 = [[NSMutableArray alloc] initWithArray:arrayValueFromNew];  //3

    for(int i=0;i<[myArray2 count];i++)
    {
        [myArray addObject:[myArray2 objectAtIndex:i]];                   //4
    }

}
  1. Это похоже на сеттер для свойства array1
  2. Вы устанавливаете свойство 'массив' на arrayValueFromNew. Поскольку я не знаю, было ли это свойство объявлено с помощью retain или copy, я не знаю, является ли массив указателем на arrayValueFromNew или указателем на копию arrayValueFromNew
  3. Вы устанавливаете myArray2 как новый массив, который содержит объекты arrayValueFromNew
  4. Для каждого объекта в myArray2 (которые являются объектами из arrayValueFromNew. См. Пункт 3) вы добавляете этот объект в myArray. Предполагая, что myArray является NSMutableArray, оно началось с объектов из arrayValueFromNew, которые вы теперь снова добавили. Он содержит каждый элемент в arrayValueFromNew дважды.
0 голосов
/ 07 февраля 2011

Это будет работать,

NSMutableArray *mutarr=[[NSMutableArray alloc]initWithArray: array1]
0 голосов
/ 07 февраля 2011

В вашем коде myArray и myArray2 оба имеют одинаковые объекты, поскольку вы присваиваете массив arrayValueFromNew для обоих. Так что это вроде не имеет смысла.

Но чтобы ответить на ваш вопрос «как добавить один массив в другой?» делать:

[mutableArray1 addObjectsFromArray: array2];

EDIT:

так должен выглядеть ваш метод

-(void)setArray1:(NSMutableArray *)arrayValueFromNew

{

    if(!self.myArray)
    {
        self.myArray = arrayValueFromNew;
    }
    else
    {
        [self.myArray addObjectsFromArray:arrayValueFromNew];
    }
}

Ваш 'myArray должен быть инициализирован. Вы можете инициализировать его в viewDidLoad или init:

self.myArray = [[NSMutableArray alloc] initWithCapacity: 1];

0 голосов
/ 07 февраля 2011
NSMutableArray *array1 = [NSMutableArray array], *array2 = [NSMutableArray array];

// add some objects to the arrays

[array1 addObjectsFromArray:array2];

//array1 now contains all the objects originally in array1 and array2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...