NSUserdefault可以保存两个同名的数组,还是替换以前的数组?
答案 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];