0

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

4

1 回答 1

1

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

更新:-

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

NSUserDefaults  *userDefaults;
NSMutableArray *yourArray;

后...

AppDelegate.m填入applicationDidFinishLonching:法_

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];

之后,当您要插入、更新或删除此用户的数据时默认使用波纹管代码...

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

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

         或插入记录使用下面..

       

[appDelegate.yourArray addObject:AddValueHere];

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

appDelegate.yourArray = YourNewArray; 

[appDelegate.yourArray retain];

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

NSData *data=[NSKeyedArchiverarchivedDataWithRootObject:appDelegate.yourArray];
    [appDelegate.userDefaults setObject:data forKey:@"yourArray"];
    [appDelegate.userDefaults synchronize];
于 2012-11-01T12:43:01.933 回答