2009-04-22 122 views
35

我必須創建一個動態NSArray,也就是說,我不知道數組的大小或數組將具有哪些元素。這些元素需要動態添加到數組中。我看着NSArray類的引用。有一種叫做arrayWithObjects的方法,它應該在初始化數組本身時使用。但我不知道如何實現我需要做的事情。NSArray添加元素

我需要做一些事情,如下列:

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

回答

73

如果您創建一個NSArray你將不能夠將元素添加到它,因爲它是不可變的。您應該嘗試使用NSMutableArray

此外,您倒置了allocinit的順序。 alloc創建一個實例並且init初始化它。

的代碼會是這個樣子(假設getData是一個全局函數):

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

這裏是另一種方式在陣列中添加對象,如果你是不可改變的陣列工作。這是線程安全的。

您可以使用arrayByAddingObject方法。有些時候它好多了。下面是關於它的討論:NSMutableArray vs NSArray which is better

+0

`[陣列arrayByAddingObject:@ 「mažiukas」];`不會添加新的元素。 – 2015-03-07 03:12:21

1

轉換您的NSArray到NSMutableArray裏,然後你就可以動態地添加值:

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