2010-02-05 48 views
7

我需要將NSArray的內容複製到NSMutable數組。換句話說,我想將arrayCountryChoices複製到arraySearchResults。有任何想法嗎????iPhone SDK:如何將NSArray的內容複製到NSMutable數組?

//main data 
NSArray *arrayCountryChoices; 

//search results buffer 
NSMutableArray *arraySearchResults; 


//create data 
arrayCountryChoices = [[NSArray alloc] initWithObjects:@"foo",@"bar",@"baz",nil]; 

//copy the original array to searchable array ->> THIS IS NOT WORKING AS EXPECTED 
arraySearchResults = [[NSMutableArray alloc] arrayWithArray:arrayCountryChoices]; 

在此先感謝。

回答

23

它要麼

[NSMutableArray arrayWithArray:anArray]; 

[[NSMutableArray alloc] initWithArray:anArray]; 

[anArray mutableCopy]; 

在您的示例代碼,因爲你對NSMutableArray實例調用arrayWithArray不起作用,但arrayWithArray是一個類方法。

作爲一般規則,與init開始initalization方法是實例方法,以及那些與類(array等)的名稱開始是類方法。類方法返回自動釋放的對象,而實例方法返回保留的對象。

+0

//將原始數組複製到可搜索數組中 \t arraySearchResults = [[NSMutableArray alloc] initWithArray:arrayCountryChoices]; 像冠軍一樣工作。謝謝。 – user265550 2010-02-05 21:06:12

+0

不客氣。 – 2010-02-05 21:15:18

+0

哪些更有效? – FreeAsInBeer 2013-05-22 21:02:21

0

它不工作,因爲arrayWithArray是一個類方法,而不是一個實例方法。

你可以做[NSMutableArray arrayWithArray:arrayCountryChoices]做你需要的。

您可以撥打[arrayCountryChoices mutableCopy]返回一個新的可變數組,其內容爲arrayCountryChoices

4

您還可以創建空的可變數組,並使用-addObjectsFromArray方法對象添加到它

2

請注意使用時:

[NSMutableArray arrayWithArray:anArray]; 

[[NSMutableArray alloc] initWithArray:anArray]; 

您總能獲得一個陣列即使anArray爲零,但與:

[anArray mutableCopy]; 

如果anArray爲零,則您將得到零。所以如果你想確定你真的得到了一個數組,即使它可能是空的,也可以使用前面的方法。

相關問題