嗨,有些人给了我一个想法。
我正在使用NSUserDefault
保存和重新获取保存代码的值。
dataDict_=[[NSMutableDictionary alloc]init];
[dataDict_ setObject:[nameText_ text] forKey:@"Name"];
[dataDict_ setObject:[linkText_ text] forKey:@"Link"];
NSUserDefaults *userDefault=[NSUserDefaults standardUserDefaults];
[userDefault setObject:dataDict_ forKey:@"Dict"];
[[NSUserDefaults standardUserDefaults]synchronize];
[dataDict_ release];
对于重审代码是
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *favourites = [[standardUserDefaults objectForKey:@"Dict"] mutableCopy];
现在问题是在这段代码的帮助下,我能够一次保存和检索数据如果我再次保存,那么我的新值将重叠到最后一个值。
我需要从NSUserDefault
中的其他页面保存一个值,然后在其他页面上执行并在表格中添加数组并显示。
我希望逐个添加10个名称NSUserDefault
,然后从userdefault和display中重新显示。
但是在这段代码的帮助下,我只能检索新数据,以及最后的数据与新数据重叠。
请给我解决方案如何解决此问题。
NSLog(@"The dict value is %@",favourites);
答案 0 :(得分:1)
不是存储一个值,而是存储一个数组:
// Create a data dictionary for this name & link
dataDict_=[[NSMutableDictionary alloc]init];
[dataDict_ setObject:[nameText_ text] forKey:@"Name"];
[dataDict_ setObject:[linkText_ text] forKey:@"Link"];
// Get the current array from user defaults
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSMutableArray *favourites = [[userDefault objectForKey:@"favourites"] mutableCopy];
if (nil == favourites) favourites = [[NSMutableArray alloc] init];
// Add the new details to it
[favourites addObject:dataDict];
// Store the array in the user defaults
[userDefault setObject:favourites forKey:@"favourites"];
[userDefault synchronize];
// Release
[favourites release];
[dataDict release];
现在,要从用户默认值中取回所有详细信息,您将获得一个数组而不是一组详细信息
NSArray *favourites = [[NSUserDefaults standardUserDefaults] objectForKey:@"favourites"];