从本地数组中删除对象时,从AppDelegate类中的Dictionary声明中删除Object

时间:2018-04-20 10:22:15

标签: ios objective-c

localArray = [[APPDELEGATE dicGlobalCat] valueForKey:@"array"];   

//ViewDidload
// get array list from appdelegate Dictionary to local array

-(void)btnCloseCategory:(UIButton *) button
{        
    int index = (int)button.tag;

    [localArray removeObjectAtIndex:index];    
//here i'm remove object only from local array.

    [tbl reloadData];
}

//仅从本地数组中删除对象,它还从appdelegate Dictionary中删除对象。怎么可能?

1 个答案:

答案 0 :(得分:1)

问题

当您撰写localArray = [[APPDELEGATE dicGlobalCat] valueForKey:@"array"]时,localArray指向[[APPDELEGATE dicGlobalCat] valueForKey:@"array"]的地址。

这意味着它们指向同一个对象

因此,当您从数组中删除对象时,它们都会受到影响。

解决方案

要解决此问题,请先创建[[APPDELEGATE dicGlobalCat] valueForKey:@"array"]的副本,然后再将其分配给loadArray

localArray = [[[APPDELEGATE dicGlobalCat] valueForKey:@"array"] mutableCopy];