Iphone NSUserDefault是否需要几秒钟来注册我传递给它的值?

Iphone NSUserDefault是否需要几秒钟来注册我传递给它的值?,iphone,object,nsuserdefaults,nsinteger,Iphone,Object,Nsuserdefaults,Nsinteger,我正在向NSUserDefault对象传递一个整数值,以便在我的应用程序加载时存储以供使用。在我尝试将整数值转换为浮点值之前,我一直让它工作得很好。它引起了一大堆问题,所以我重新调整了我的方法,然后命令z回到了整数的安全状态……或者我是这么想的 过去,如果我保存了值,我可以立即关闭模拟器,控制台会毫无问题地吐出正确保存的数字。现在,在那个愚蠢的float混乱之后(我可能破坏了我的NSUserDefault对象吗?听起来很愚蠢…),要显示正确的数字有点像赌博 我已经查看了大量nslog,并且可以确

我正在向NSUserDefault对象传递一个整数值,以便在我的应用程序加载时存储以供使用。在我尝试将整数值转换为浮点值之前,我一直让它工作得很好。它引起了一大堆问题,所以我重新调整了我的方法,然后命令z回到了整数的安全状态……或者我是这么想的

过去,如果我保存了值,我可以立即关闭模拟器,控制台会毫无问题地吐出正确保存的数字。现在,在那个愚蠢的float混乱之后(我可能破坏了我的NSUserDefault对象吗?听起来很愚蠢…),要显示正确的数字有点像赌博

我已经查看了大量nslog,并且可以确认当我点击save时保存的值被正确地传递给UserDefault类中的set方法。set方法正确获取值,然后将其设置为NSUD对象,如下所示:

[self setObject:[NSNumber numberWithInteger:num] forKey:savedNum];
当我在该对象上运行get方法时,控制台会正确地打印出值。当应用程序加载时,它会调用我刚刚测试过的同一个get方法,但它并不总是返回正确的结果。通常,显示的是上一次保存的值

如果我按下保存按钮并等待5秒钟后关闭应用程序,它以前工作正常,但很少。如果我等10秒钟,它就会吐出正确的数字

为什么时间与这次行动有关?我完全不知道为什么会发生这种情况,特别是因为我昨天就让它正常工作了


任何想法或意见都将不胜感激

你确定要同步NSUserDefaults了吗?

我从来没有注意到这种行为,而且我认为没有延迟

因此,最明显的问题是:

如果您执行以下操作:

[[NSUserDefaults standardUserDefaults] setInteger:value ForKey:@"myInteger"];
NSLog(@"It is %d",[[NSUserDefaults standardUserDefaults] integerForKey:@"myInteger"]);

你得到正确的值了吗?

我认为这是一个模拟器错误。使用模拟设备上的应用程序,打开Settings.app。现在退出Settings.app。您的默认设置将突然开始工作


也可以在苹果论坛上看到这条关于的帖子。

是的,将上面的NSLog与我的其他一些NSLog一起使用产生了相同的价值。如果是在我关闭应用程序之前,它是正确的,如果是在加载它时,它会生成错误的号码…太奇怪了!!我不熟悉这一点,我如何同步?很好的调用-但我认为这只能控制它写入flash。(根据文档)它保留了一个“内存缓存”——在回读时应该保持一致——甚至在它被写入flash之前。@Jerry Do[nsudobjectnamehere synchronize]。@Brad:不确定你在这里的意思。据我所知,-synchronize应该将其写入磁盘,并将内存中的版本更新到磁盘上的版本。因为你基本上只需要查看singleton用户默认值,所以在同步之后,不应该有一个地方有错误的过期值。所以就在模拟器中,进入设置应用程序,像齿轮一样?打开然后关闭?我试过了,但没用……我打算回家后把它扔到我的设备上,看看是否有用。我希望这只是一个模拟器bug…谢谢,我知道我遇到了同样的模拟器问题,那个舞蹈似乎为我解决了这个问题很抱歉