我面临着NSUserDefaults非常奇怪的行为,问题是[NSUserDefaults standardUserDefaults]对象被随机删除!
我的[NSUserDefaults standardUserDefaults]包含大约65个对象(60个小NSStrings和3个数组,其中最大计数可以是4和2个其他数组,最大数量为30.注意到它在面对此问题时从未是最大的情况) ,其中一个对象是一个值,用于检查用户是否已完成注册阶段。 启动应用程序时,有时这个NSUserDefaults将只包含来自那些65的其他5个对象,其他的正在从plist中删除,即使我重新启动应用程序也不会再次出现,这会导致用户再次进入注册阶段!!
我很确定我正在使用保存功能
[[NSUserDefaults standardUserDefaults] setObject:@"Value" forKey:@"Key"];
[[NSUserDefaults standardUserDefaults] synchronize];
我搜索谷歌的类似行为没有找到任何可以帮助的东西! 有没有人遇到这样的行为,解决它的解决方案是什么?
感谢您的帮助
答案 0 :(得分:4)
我确实想在这里提供帮助,因为我和我的一个项目有过完全相同的奇怪行为。
所以请耐心等待,我的项目发生了什么:我有一个单例类,它封装了几个属性,并且我已经覆盖了这些属性的setter和getter。在setter方法中,我得到standardUserDefaults实例并为key设置对象,并进行同步。在getter方法中,我返回键的对象。此外,我还有一个登录成功指示器值,用于指示登录是否成功。和你的问题一样,我的对象消失了。经过几天的努力,事实证明,当网络无法访问时,登录指示符被初始化为false。在指示器false子句中,我将nil对象设置为用户默认值。
我的观点是:
希望这能带来领先优势。