【发布时间】:2013-11-18 08:42:34
【问题描述】:
我有一个 ios 应用程序,最近收到了一些用户关于他们的设置被重置的报告。
使用NSUserDefaults保存设置。
我的问题是,用户默认设置是否会因某种原因损坏/重置?
关于我如何使用它的一些注意事项:
-
当我启动我的应用程序时,我仅在使用
李>registerDefaults的密钥不存在时才存储默认值(这样做是为了处理“首次安装”场景)。 上述大多数报告都描述了应用程序崩溃,然后在重新打开时将设置重置为默认值。
- 我对@987654323@ 的使用非常简单——保存
numbers/strings,有时阅读它们等等。没什么太花哨的。我不删除密钥。
一些代码示例:
例如,我将数据保存在不同的地方,使用:
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 在崩溃时重置的已知问题的一般性问题。代码本身很简单,但我还是会发布一些。
-
在将数据保存到
NSUserDefaults后,您是否在呼叫synchronise?如果您不这样做,则数据可能没有保存在数据库中,因为由于正在发生的崩溃,永远不会调用synchronise方法。 -
您无需致电
-synchronize“总是在保存数据后”。也许这个-synchronize方法调用一定是导致问题的地方(实际上,您需要复制崩溃场景来找出问题)
标签: ios nsuserdefaults