NSArray添加元素

时间:2009-04-22 18:05:47

标签: objective-c nsarray

我必须创建一个动态NSArray,也就是说,我不知道数组的大小或数组将具有的元素。需要动态地将元素添加到数组中。我查看了NSArray类引用。有一个名为arrayWithObjects的方法,应该在初始化数组本身时使用。但我不知道如何实现我的目标。

我需要做以下事情:

NSArray *stringArray = [[NSArray init] alloc] ;  
for (int i = 0; i < data.size; i++){  
    stringArray.at(i) = getData(i);
}

3 个答案:

答案 0 :(得分:76)

如果您创建NSArray,则无法向其添加元素,因为它是不可变的。您应该尝试使用NSMutableArray代替。

此外,您颠倒了allocinit的顺序。 alloc创建一个实例,init对其进行初始化。

代码看起来像这样(假设getData是一个全局函数):

NSMutableArray *stringArray = [[NSMutableArray alloc] init];
for(int i=0; i< data.size; i++){
   [stringArray addObject:getData(i)];
}

答案 1 :(得分:7)

如果您正在使用不可变数组,这是在数组中添加对象的另一种方法。这是线程安全的。

您可以使用arrayByAddingObject方法。有时候它好多了。以下是对它的讨论:NSMutableArray vs NSArray which is better

答案 2 :(得分:3)

将NSArray转换为NSMutableArray,然后可以动态添加值:

NSMutableArray *mutableStringArray = [stringArray mutableCopy];
[mutableStringArray addObject:@"theNewElement"];