根据 Apple 的要求,移动我的一个项目以支持沙盒。我像这样使用 UserDefaults:

[[NSUserDefaults standardUserDefaults] setObject:@(myNumber) forKey:myNumberKey];
[[NSUserDefaults standardUserDefaults] synchronize];

一切都按预期工作,直到我启用沙箱。如果我启用了沙箱,该应用程序会在其沙箱目录 (.plist.lockfile) 中创建一个锁定文件,并且不会创建实际的 .plist 文件。

我做错了什么,如何在沙箱环境下将我的设置存储在 UserDefaults 中?

更新:在单独的 Mac 上使用最新的 Xcode 安装了全新的 10.7.3 - 同一个项目编译并在启用沙箱的情况下正常工作。

此外,我尝试在我的 Mac 上运行这个项目,其中沙箱在不同的用户帐户(新创建的)下不起作用,结果完全相同 - 不行。在这一点上,我认为问题出在这个特定 mac 上的系统配置上。问题是 - 假设我是唯一一个遇到这个奇怪问题的人是否安全?可能不会...

最佳答案

那应该可以正常工作。如果首选项系统能够创建锁定文件,则意味着您的应用程序具有在该目录中创建文件的适当权限,并且已正确查找应该放置它们的位置。因此,一定是其他地方出了问题。

发生这种情况时是否有任何控制台日志记录? -synchronize 的返回值是多少?

(旁白:通常 -synchronize 不是必需的,只会使您的应用程序变慢,NSUserDefaults 会自行处理)

关于objective-c - Lion 下的 NSUserDefaults 和沙箱,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9268547/

10-14 22:04