在NSUserDefaults中保存值时出现问题

时间:2011-07-20 19:50:03

标签: ios cocoa-touch nsuserdefaults

我将此作为我的viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (defaults == [cells objectAtIndex:0])
    {
        NSString * myFile = [[NSBundle mainBundle]pathForResource:@"cells" ofType:@"plist"];
        cells = [[NSMutableArray alloc]initWithContentsOfFile:myFile];
    }
    else
    {
        [defaults stringForKey:@"string1"];
    }
}

对于我的viewWillDisappear我有:

-(void)viewWillDisappear:(BOOL)animated
{
    string1 = [cells objectAtIndex:0];
    [defaults setObject:string1 forKey:@"string1"];
}

但是我无法保存数据。有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:3)

defaults应该是NSUserDefaults的实例:

defaults = [NSUserDefaults sharedUserDefaults];

因此,if (defaults == [cells objectAtIndex:0])不是有效的代码行,除非你在调整RAM,否则它永远不会相等。

否则,代码看起来很好。

答案 1 :(得分:2)

您是否在某处将默认设置为[NSUserDefaults standardUserDefaults]?另外,为什么要将它与单元数组中的第一个对象进行比较?看起来很奇怪。

否则你的想法是正确的。确保实际调用viewWillDisappear方法。您也可以致电[NSUserDefaults synchronize]立即保存更改。

最后一件事,你在其他{}区块中没有做任何事情。您需要将[defaults stringForKey:@"string1"];的值分配给变量才能使用它。