2012-01-21 86 views
1

我知道你們可能會覺得這是重複的問題。但是我對我的項目搞錯了這個問題。 現在轉移到這個問題,我採取了名爲arr1NSMutableArray,其中包含字符串值,如@"34"@"40"等。現在,我有第二個NSMutableArray,名爲arr2。我已經嘗試了下面的代碼。如何將一個NSMutablearray複製到另一個NSMutablearray?

[arr1 initWithObjects:@"1",@"2", nil]; 
arr2 = [[[NSMutableArray alloc] initWithArray:arr1 copyItems:YES] autorelease]; 

然後,我試過

NSString *no = [arr2 objectAtIndex:0]; 
tst.text = no; 

但是,它給了我在我的文本框沒有價值。
如果any1可以幫助我,這將是很大的幫助。

+0

什麼'NSLog(@「%@」,no);'在控制檯中顯示? –

+0

您是否測試過您的文本字段是否爲「nil」。 – v1Axvw

+0

@ lef2是的沒有。 – MayurCM

回答

3

您的arr1可能爲零。它應該是

arr1 = [[NSArray alloc] initWithObjects:@"1", @"2", nil]; 
+0

嗯!接得好! – EmptyStack

0

你們是不是在同一個方法[arr2 objectAtIndex:0]對創建arr2

也許問題是你在arr2上使用autorelease。所以,在其他方法中,它可能已經失去了它的價值。

我嘗試了以下內容和它的作品對我來說:

NSMutableArray * arr1 = [[NSMutableArray alloc]initWithObjects:@"1", @"2", nil]; 
NSMutableArray * arr2 = [[[NSMutableArray alloc] initWithArray:arr1 copyItems:YES] autorelease]; 
NSString * no = [arr2 objectAtIndex:0]; 
NSLog(@"%@", no); 
6
[arr1 initWithObjects:@"1",@"2", nil]; 

是沒有意義的,你可能想要的是使用NSMutableArray

NSArray *arr1 = [NSArray arrayWithObjects:@"1",@"2", nil]; 
NSMutableArray *arr2 = [arr1 mutableCopy]; 

NSLog(@"arr1: %p, %@", arr1, arr1); 
NSLog(@"arr2: %p, %@", arr2, arr2); 

的NSLog輸出:

arr1: 0x7924c50, (
       1, 
       2 
       ) 
arr2: 0x7924f00, (
       1, 
       2 
       ) 
0

Add addit離子到tia的答案:你需要先分配它。

方法'mutableCopy'將創建數組的副本,而不是其中的元素。 您可以創建一個新的不可改變陣「initWithArray:ARR1 copyItems:YES」,然後通過調用「mutableCopy」創建它的一個可變的版本:

NSArray *arr1 = [[NSArray alloc] initWithObjects:@"1",@"2", nil]; 
NSMutableArray arr2 = [[[NSArray alloc] initWithArray: arr1 copyItems:YES] mutableCopy]; 
2

arr1必須nil否則你會崩潰,但更重要的是要創建的NSMutableArray錯誤:

你不應該真正做到allocinit在單獨的行

NSMutableArray *myArray = [NSMutableArray alloc]; 

NSLog(@"%@", [myArray class]); 

//=> __NSPlaceholderArray 

在這種情況下,myArray指針指向的類型爲__NSPlaceholderArray的輕量級,這很可能不是您想要的。你寧願:

--------------------------------------- 

myArray = [[NSMutableArray alloc] init]; 

NSLog(@"%@", [myArray class]); 

//=> __NSArrayM 

如果你有一個合法的NSMutableArray也將崩潰,你叫initWithArray:有:

[NSMutableArray initWithCapacity:]: method only defined for abstract class. 

這是因爲該方法是最有可能在__NSPlaceholderArray

定義
相關問題