如何将NSMutableArray保存到NSMutableArray中,以便NSMutableArray中的先前数据保持不变?

时间:2011-02-07 10:33:56

标签: iphone objective-c 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]];
    }

}

4 个答案:

答案 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

答案 1 :(得分:0)

这将有效,

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

答案 2 :(得分:0)

在您的代码中,myArray和myArray2都具有相同的对象,因为您将arrayValueFromNew数组分配给两者。所以它没有意义。

但要回答你的问题'如何将一个阵列添加到另一个阵列?'做:

  

[mutableArray1   addObjectsFromArray:数组2];

编辑:

这是你的方法看起来的样子

-(void)setArray1:(NSMutableArray *)arrayValueFromNew

{

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

您的'myArray必须初始化。您可以在viewDidLoad或init中初始化它:

  

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

答案 3 :(得分:0)

看起来你只想要旧数组的新副本。

有一个方便的功能
NSMutableArray *newArray = [oldArray mutableCopy];

请记住,您已经使用了copy来获取此数组,因此您负责管理newArray的内存

修改

你的代码在做什么?

-(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. 的setter
  3. 您正在将属性“数组”设置为arrayValueFromNew。由于我不知道是否已使用retaincopy声明此属性,因此我不知道数组是指向arrayValueFromNew的指针还是指向{{1}副本的指针}}
  4. 您将myArray2设置为包含arrayValueFromNew
  5. 对象的新数组
  6. 对于arrayValueFromNew中的每个对象(来自myArray2的对象。请参阅第3点),将此对象添加到arrayValueFromNew。假设myArraymyArray,它是从NSMutableArray的对象开始的,您现在又添加了这些对象。它包含arrayValueFromNew中的每个项目两次。