NSUserdefaults可以保存两个同名的数组

时间:2012-11-01 12:32:54

标签: iphone nsuserdefaults

NSUserdefault可以保存两个同名的数组,还是替换以前的数组?

1 个答案:

答案 0 :(得分:1)

是的,它替换为相同的变量,xcode不允许复制同一个类中任何对象的相同名称,因此在您不从类中删除任何一个数组名称之前,您的应用程序不会编译...

<强>更新: -

AppDelegate.h文件中只声明变量...

NSUserDefaults  *userDefaults;
NSMutableArray *yourArray;

...后

AppDelegate.m方法中的applicationDidFinishLonching: Fille

userDefaults = [NSUserDefaults standardUserDefaults];
    NSData *dataRepresentingtblArrayForSearch = [userDefaults objectForKey:@"yourArray"];
    if (dataRepresentingtblArrayForSearch != nil) {
        NSArray *oldSavedArray = [NSKeyedUnarchiverunarchiveObjectWithData:dataRepresentingtblArrayForSearch];
        if (oldSavedArray != nil)
            yourArray = [[NSMutableArray alloc]initWithArray:oldSavedArray];
        else
            yourArray = [[NSMutableArray alloc] init];
    } else {
        yourArray = [[NSMutableArray alloc] init];
    }
    [yourArray retain];

之后当你想插入,更新或删除此用户的数据时默认使用Bellow Code ...

对于删除记录,请使用以下方式

[appDelegate.yourArray removeObjectAtIndex:IndexValue];// define integer value here on IndexValue

要么 插入记录使用下面..

[appDelegate.yourArray addObject:AddValueHere];

或者用new array替换整个数组然后写这个

appDelegate.yourArray = YourNewArray; 

[appDelegate.yourArray retain];

之后保存整个数据synchronize NSUserDefaults如下...

NSData *data=[NSKeyedArchiverarchivedDataWithRootObject:appDelegate.yourArray];
    [appDelegate.userDefaults setObject:data forKey:@"yourArray"];
    [appDelegate.userDefaults synchronize];