Macos OS X:NSUserDefaults未保存
我有一个针对OSX的沙盒应用程序,我在Macos OS X:NSUserDefaults未保存,macos,cocoa,nsuserdefaults,Macos,Cocoa,Nsuserdefaults,我有一个针对OSX的沙盒应用程序,我在NSUserDefaults中保存了一些数据,在我从~Library/Preferences/目录中删除plist文件之前,一切都很好 我认为应用程序应该重新创建它,但它没有。当我调试时,我看到了这一点 [[NSUserDefaults standardUserDefaults]同步]方法返回YES 数据保存在类中,但当我重新启动应用程序时,用户默认值为空 即使我将这些plist文件从备份复制到Preferences目录,应用程序也不会看到它 当然,plis
NSUserDefaults
中保存了一些数据,在我从~Library/Preferences/目录中删除plist文件之前,一切都很好
我认为应用程序应该重新创建它,但它没有。当我调试时,我看到了这一点
[[NSUserDefaults standardUserDefaults]同步]
方法返回YES
数据保存在类中,但当我重新启动应用程序时,用户默认值为空
即使我将这些plist文件从备份复制到Preferences目录,应用程序也不会看到它
当然,plist应该保存在Containers/my-app bundle id/Data/Library/Preferences中,当我将plist文件从备份复制到该目录时,应用程序可以看到它,但是为什么在我删除它时不重新创建该文件呢
有人知道这是为什么吗?检查这个问题-在沙箱中运行时可能与缓存或prefs location有关:
我遇到了这个问题,这是由手动删除文件引起的。您可以改为使用
defaults
terminal命令。这样我就可以在不破坏东西的情况下重置默认值。将“bundle identifier”替换为您的bundle id
要查看当前值,请执行以下操作:
defaults read bundle-identifier
要删除存储的值,请执行以下操作:
defaults delete bundle-identifier
同步功能应该将缓存与磁盘上的数据库同步,所以我认为缓存没有问题。首选项应该放在Containers/app/Data/Library/Preferences中,但是这个目录也是空的。这也让我感到有些紧张。擦拭容器(在开发过程中)引起了各种各样的悲痛。“默认删除”等无法帮助,而
同步
什么也没写。我不理解否决票。完全合法的问题。我也有不坚持的问题。我想测试我的应用程序从“空白”状态启动。所以我扔掉了我的沙盒容器,一旦我这样做了,默认值在我重新启动操作系统之前永远不会持久。登录/注销没有任何作用,只是重新启动有帮助。谢谢@Brad Goss。在清理我的沙箱,调试了几个小时后,我也遇到了同样的问题,尽管我快发疯了。重新启动OSX似乎解决了这个问题。