根据 Apple 的要求,将我的项目之一移至支持沙箱。我像这样使用 UserDefaults:
[[NSUserDefaults standardUserDefaults] setObject:@(myNumber) forKey:myNumberKey];
[[NSUserDefaults standardUserDefaults] synchronize];
一切都按预期工作,直到我启用沙箱。如果我启用了沙箱,应用程序会在其沙箱目录(.plist.lockfile)中创建一个锁定文件,并且不会创建实际的.plist 文件。
我做错了什么以及如何将我的设置存储在沙盒环境下的 UserDefaults 中?
更新:在单独的 Mac 上安装了最新的 10.7.3 和最新的 Xcode - 同一项目在启用沙箱的情况下可以编译并正常工作。
另外,我尝试在我的 Mac 上运行这个项目,其中沙箱无法在不同的用户帐户(新创建的)下工作,但结果完全相同 - 不行。此时我认为问题出在这台特定 mac 上的系统配置上。但问题是 - 可以安全地假设我是唯一一个遇到这个奇怪问题的人吗?可能不会...
那应该可以正常工作。如果首选项系统能够创建锁定文件,则意味着您的应用程序具有在该目录中创建文件的适当权限,并且已正确查找应放置它们的位置。因此,肯定还有其他地方出了问题。
发生这种情况时是否有任何控制台日志记录? -synchronize的返回值是多少?
(旁白:一般来说 -synchronize 是不必要的,只会让你的应用程序变慢,NSUserDefaults 会自行处理)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)