代码之家  ›  专栏  ›  技术社区  ›  Alvin John Tandoc

创建阵列的副本,并在原始阵列更改时保留该副本

  •  -3
  • Alvin John Tandoc  · 技术社区  · 11 年前

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

    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 回复  |  直到 11 年前
        1
  •  1
  •   Rajesh    11 年前
    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"];
    

    这将解决您的问题

        2
  •  1
  •   Hemang    11 年前

    代替此,

    [arr_original addObjectsFromArray:arr_title];
    

    试试这个,

    arr_original = [arr_title copy];
    

    就是这么简单!

        3
  •  1
  •   gruntledcustomer    11 年前

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

    推荐文章