我必须创建一个动态NSArray,也就是说,我不知道数组的大小或数组将具有的元素。需要动态地将元素添加到数组中。我查看了NSArray类引用。有一个名为arrayWithObjects的方法,应该在初始化数组本身时使用。但我不知道如何实现我的目标。
我需要做以下事情:
NSArray *stringArray = [[NSArray init] alloc] ;
for (int i = 0; i < data.size; i++){
stringArray.at(i) = getData(i);
}
答案 0 :(得分:76)
如果您创建NSArray
,则无法向其添加元素,因为它是不可变的。您应该尝试使用NSMutableArray
代替。
此外,您颠倒了alloc
和init
的顺序。 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"];