NSUserdefault 可以保存两个同名数组还是替换以前的数组?
问问题
122 次
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 回答