NSUserDefaults用旧值覆盖新值



我有一些userdefaults值我用它们来加载UITableView

-(void) prepareDisplay
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    table.dataSourceArray = [standardUserDefaults objectForKey:@"dataSource"];
}

-(void) viewDidLoad方法{

 [self prepareDisplay];
}

到目前为止,它工作得很好。

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

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

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

有人能帮忙吗?由于

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

最新更新