创建数组的副本并在原始数组更改时保留它

时间:2014-08-20 05:50:39

标签: ios objective-c nsmutablearray

我有这个数组arr_original并复制arr_titles的值。当我更改arr_title的值时,arr_original也会更改。我想将arr_title的值复制到arr_original中,但是当我更改arr_tile的值时,不要更改arr_original的值。继承我的代码:

NSMutableArray *arr_original = [NSMutableArray new];

NSMutableArray *arr_title = [singletonManager.dictionaryAttribute objectForKey:attributeTitle];
//values of array {'one','two','three'}

[arr_original addObjectsFromArray:arr_title];
//copy values of arr_title
//values of array  arr_original{'one','two','three'}

[arr_title replaceObjectAtIndex:0 withObject:@"five"];
//replace value
//values of array  arr_title{'five','two','three'}

//values of array  arr_original{'five','two','three'}

我只想保留arr_original的值,即使我更改了arr_title值也不会改变。请帮助,谢谢:)

3 个答案:

答案 0 :(得分:1)

NSMutableArray *arr_original = [NSMutableArray new];

NSMutableArray *arr_title = [singletonManager.dictionaryAttribute objectForKey:attributeTitle];
for (id obj in arr_title){
[arr_original addObject:[[arr_title objectAtIndex:[arr_title indexOfObject:obj]] copy]]; //Copy the item
}


[arr_title replaceObjectAtIndex:0 withObject:@"five"];

这可以解决您的问题

答案 1 :(得分:1)

而不是这个,

[arr_original addObjectsFromArray:arr_title];

试试这个,

arr_original = [arr_title copy];

那很简单!

答案 2 :(得分:1)

您提供的代码没有您在评论中显示的结果。查找您如何记录或解释正在发生的事情的问题。