2011-02-07 4 views
0

Я хочу знать, как я могу добавить NSMutableArray в NSMutableArray, чтобы предыдущие данные не потерялись, и новые данные будут добавлены в следующие индексы.Как я могу сохранить NSMutableArray в 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]]; 
    } 

} 
+0

прекратите добавлять свой код в качестве комментария в каждом ответе. добавьте код к вашему вопросу вместо этого – lukya

ответ

0

В своем коде, туАггау и myArray2, оба имеют одни и те же объекты, как вы назначаете массив arrayValueFromNew в и то и другое. Так что это не имеет смысла.

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

[mutableArray1 addObjectsFromArray: array2];

EDIT:

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

-(void)setArray1:(NSMutableArray *)arrayValueFromNew 

{ 

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

Ваш «туАггау должен быть инициализирован. Вы можете инициализировать его в viewDidLoad или INIT:

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

+0

, но он удалит предыдущие данные в mutableArray1 или нет, cz Я не хочу удалить предыдущий массив, который сохраняется в mutableArray1, любое предложение? –

+0

нет, это не будет ... вот почему имя метода - 'add'ObjectsFromArray. – lukya

+0

не в это время, когда в следующий раз, когда придет другой массив, и этот метод выполнит, он стирает предыдущее значение и просто вставляет новое значение, которое придет, попробуйте еще раз –

0
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 
+0

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

+0

это мой код, но все же не работает, это метод кнопки и взятие двух NSString, сохранение в NSMutableArray, а затем вызов метода и передающее значение - (void) setArray1: (NSMutableArray *) arrayValueFromNew {self.myArray = arrayValueFromNew; myArray2 = [[NSMutableArray alloc] initWithArray: arrayValueFromNew]; \t for (int i = 0; i <[myArray2 count]; i ++) {[myArray addObject: [myArray2 objectAtIndex: i]]; } –

+0

Пожалуйста, отредактируйте этот вопрос и уточните, что вы пытаетесь сделать. Ваш код не имеет никакого смысла. –

0

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

NSMutableArray *mutarr=[[NSMutableArray alloc]initWithArray: array1] 
+0

, но при этом предыдущие значения в * mutaarr будут удалены, я хочу продолжить новые значения в массиве, а предыдущие значения должны оставаться такими же. –

+0

for (int i = 0; i <[aray1 count]; i ++) {[array2 addObject: [array1 objectAtIndex: i]]; } – KingofBliss

+0

это мой код, но все же не работает, это метод кнопки, и он берет две NSString, сохраняя в NSMutableArray, а затем вызывающий метод и передавая значение - (void) setArray1: (NSMutableArray *) arrayValueFromNew { \t self. туАггау = arrayValueFromNew; \t myArray2 = [[NSMutableArray alloc] initWithArray: arrayValueFromNew]; \t \t \t для (INT I = 0; я <[myArray2 число]; я ++) { \t \t [туАггау AddObject: [myArray2 objectAtIndex: I]]; } –

0

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

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

, но когда мне это нужно снова и снова, то какова ваша предложение, я не хочу стирать старые данные в моем массиве, так что, если 5 индексов заполнены, то следующее значение должно добавить к 6-му индексу, надеюсь, что у меня получится то, что я хочу –

+0

К сожалению, нет, я не понимаю, что вы хотеть. Вы получаете копию исходного массива, а затем можете добавлять объекты в любой массив. – Abizern