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