41

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

我需要做一些类似以下的事情:

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

3 回答 3

80

如果您创建一个,NSArray您将无法向其添加元素,因为它是不可变的。您应该尝试NSMutableArray改用。

此外,您颠倒了alloc和的顺序initalloc创建一个实例并init初始化它。

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

NSMutableArray *stringArray = [[NSMutableArray alloc] init];
for(int i=0; i< data.size; i++){
   [stringArray addObject:getData(i)];
}
于 2009-04-22T18:12:36.017 回答
8

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

你可以使用arrayByAddingObject方法。有时候会好很多。这是关于它的讨论:NSMutableArray vs NSArray which is better

于 2014-06-26T09:28:39.150 回答
4

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

NSMutableArray *mutableStringArray = [stringArray mutableCopy];
[mutableStringArray addObject:@"theNewElement"];
于 2015-03-07T03:02:48.093 回答