根据Apple的要求,移动我的一个项目来支持沙盒.我像这样使用UserDefaults:
[[NSUserDefaults standardUserDefaults] setObject:@(myNumber) forKey:myNumberKey];
[[NSUserDefaults standardUserDefaults] synchronize];
一切都按预期工作,直到我启用沙盒.如果我启用了沙盒,则应用程序会在其沙箱目录(.plist.lockfile)中创建一个锁定文件,并且不会创建实际的.plist文件.
我做错了什么以及如何在沙箱环境下将我的设置存储在UserDefaults中?
更新:安装新的10.7.3与最新的Xcode在一个单独的Mac上 – 相同的项目编译并在启用沙盒的情况下正常工作.
此外,我试图在我的Mac上运行这个项目,其中沙箱在不同的用户帐户(新创建)下工作,结果完全相同 – 没有去.此时我认为问题在于此特定mac上的系统配置.问题是 – 可以安全地假设我是唯一一个有这个奇怪问题的人吗?可能不是…
最佳答案 这应该工作正常.如果首选项系统能够创建锁定文件,则表示您的应用程序具有在该目录中创建文件的适当权限,并且已正确查找应放置它们的位置.因此,其他一些必须出错.
发生这种情况时是否有任何控制台记录?什么是-synchronize的返回值?
(除此之外:通常情况下,-synchronize不是必需的,只会使你的应用程序变慢,NSUserDefaults会处理它自己)