Ios NSUserDefaults被重置

Ios NSUserDefaults被重置,ios,nsuserdefaults,Ios,Nsuserdefaults,我有一个ios应用程序,最近从用户那里收到一些关于重置设置的报告。 使用NSUserDefaults保存设置 我的问题是,用户默认值是否会因为某种原因而损坏/重置 关于如何使用它的一些注意事项: 当我启动我的应用程序时,我只在密钥不存在的情况下使用registerDefaults(这样做是为了处理“首次安装”场景)存储默认值 上面提到的大多数报告都描述了应用程序崩溃,然后当它重新打开时,设置被重置为默认设置 我使用的NSUserDefaults非常简单-保存数字/字符串,有时读取它们,等等。没

我有一个ios应用程序,最近从用户那里收到一些关于重置设置的报告。 使用
NSUserDefaults
保存设置

我的问题是,用户默认值是否会因为某种原因而损坏/重置

关于如何使用它的一些注意事项:

  • 当我启动我的应用程序时,我只在密钥不存在的情况下使用
    registerDefaults
    (这样做是为了处理“首次安装”场景)存储默认值

  • 上面提到的大多数报告都描述了应用程序崩溃,然后当它重新打开时,设置被重置为默认设置

  • 我使用的
    NSUserDefaults
    非常简单-保存
    数字/字符串
    ,有时读取它们,等等。没什么特别的。我不取钥匙
一些代码示例:

例如,我使用以下方法将数据保存在不同的位置:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"FirstLevel" forKey:@"Level"];
[defaults setInteger:100 forKey:@"Score"];
[defaults synchronize];
我阅读时使用:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
int intValue = [defaults integerForKey:@"Score"];
return intValue;
那么,会不会有什么原因导致用户默认设置以某种方式重置/损坏


更一般地说,它是否与报告的应用程序崩溃有关,即使崩溃不是由用户默认值的写入/读取直接导致的?

据我所知,只有当应用程序被删除时才会被刷掉。由于您的NSUserDefaults的重置问题在应用程序崩溃之前出现,首先,我要解决崩溃问题。

如果您在设备中安装应用程序,NSUserDefault将再次初始化…当您在设备中测试应用程序时,您将使用Xcode连接设备,如果您运行该程序,值将重置…

发布一些代码将非常有用。请在此处添加代码,然后我们将继续我可以理解。到底是什么问题。我很乐意添加一些代码,尽管这是一个关于NSUserDefaults在崩溃时重置的已知问题的一般性问题。代码本身非常简单,但我还是会发布一些。在将数据保存到
NSUserDefaults
后,是否调用
synchronize
?如果不这样做,则数据可能不会保存在数据库中,因为由于正在发生的崩溃而从未调用
synchronize
方法。您不需要调用
-synchronize
“始终在保存数据之后”。可能在某个地方,这个
-synchronize
方法调用一定导致了问题(实际上,您需要复制崩溃场景来找出问题)不是真的。如果删除应用程序,然后在Xcode中再次运行它,它将重新安装并重新初始化默认值。但是,如果您只是再次测试应用程序而不删除,那么默认设置将被保留。