将值保存并检索到IPhone中的NSUserDefault

时间:2011-10-27 10:01:41

标签: iphone

嗨,有些人给了我一个想法。

我正在使用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);

1 个答案:

答案 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"];