[英]How to copy one NSMutablearray to another NSMutablearray?
我知道你們可能會覺得這是重復性的問題。 但是我在項目中搞砸了這個問題。 現在轉到問題,我采用了一個名為arr1
的NSMutableArray
,其中包含諸如@"34"
, @"40"
等字符串值。 現在,我有了第二個NSMutableArray
名為arr2
。 我已經嘗試過下面的代碼。
[arr1 initWithObjects:@"1",@"2", nil];
arr2 = [[[NSMutableArray alloc] initWithArray:arr1 copyItems:YES] autorelease];
然后,我嘗試
NSString *no = [arr2 objectAtIndex:0];
tst.text = no;
但是,它在文本框中沒有任何價值。
如果有可以幫助我的話,那將是很大的幫助。
[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
)
您的arr1可能為零。 它應該是
arr1 = [[NSArray alloc] initWithObjects:@"1", @"2", nil];
您的arr1
必須為nil
否則將導致崩潰,但更arr1
是您錯誤地創建了NSMutableArray
:
您實際上不應在單獨的行上進行alloc
和init
NSMutableArray *myArray = [NSMutableArray alloc];
NSLog(@"%@", [myArray class]);
//=> __NSPlaceholderArray
在這種情況下, myArray
指針指向的類型為__NSPlaceholderArray
的flyweight,這很可能不是您想要的。 您希望:
---------------------------------------
myArray = [[NSMutableArray alloc] init];
NSLog(@"%@", [myArray class]);
//=> __NSArrayM
如果您確實擁有合法的NSMutableArray
並使用以下命令調用initWithArray:
,也會使您崩潰:
[NSMutableArray initWithCapacity:]: method only defined for abstract class.
這是因為該方法最有可能在__NSPlaceholderArray
定義
您是否正在使用創建arr2
的相同方法嘗試[arr2 objectAtIndex:0]
?
也許問題是您在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);
除了tia的答案:您需要先分配它。
方法“ mutableCopy”將創建數組的副本,而不是其中的元素的副本。 您可以使用'initWithArray:arr1 copyItems:YES'創建一個新的不可變數組,然后通過調用'mutableCopy'創建一個可變版本。
NSArray *arr1 = [[NSArray alloc] initWithObjects:@"1",@"2", nil];
NSMutableArray arr2 = [[[NSArray alloc] initWithArray: arr1 copyItems:YES] mutableCopy];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.