NSUserDefaults用旧的覆盖新值

时间:2011-04-21 07:41:58

标签: iphone ios4 nsuserdefaults

我有一堆userdefaults值,用于加载我的UITableView

-(void) prepareDisplay
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    table.dataSourceArray = [standardUserDefaults objectForKey:@"dataSource"];

}

- (void)viewDidLoad方法     {

 [self prepareDisplay];

}

到目前为止一切正常。

然后稍后我更改userdefaults值并同步。然后我必须重新加载我的桌子。但在此之前,我需要使用相同的

设置数据源数组
  • prepareDisplay()方法。

这里我认为我之前在viewDidLoad中创建的userdefaults实例是覆盖或搞乱我的userdefaults值,它再次调用旧值而不是新设置的值。我新设置的userdefaults值被覆盖了旧的价值观。我执行了userdefaults重置后,检查了应用程序沙箱中的plist文件,并正确反映了这些值。但后来,我不知道如何以及何时被旧的价值所覆盖。我确信在重置之后我没有做任何明确的事情来搞砸它们。

任何人都可以提供帮助。感谢

1 个答案:

答案 0 :(得分:1)

实际上你不需要NSUserDefaults的实例变量,因为它是一个单一对象。躲开它。此外,您可以检查同一对象的方法- (BOOL)synchronize 将对持久域的任何修改写入磁盘,并将所有未修改的持久域更新为磁盘上的内容。