Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos OS X:NSUserDefaults未保存_Macos_Cocoa_Nsuserdefaults - Fatal编程技术网

Macos OS X:NSUserDefaults未保存

Macos OS X:NSUserDefaults未保存,macos,cocoa,nsuserdefaults,Macos,Cocoa,Nsuserdefaults,我有一个针对OSX的沙盒应用程序,我在NSUserDefaults中保存了一些数据,在我从~Library/Preferences/目录中删除plist文件之前,一切都很好 我认为应用程序应该重新创建它,但它没有。当我调试时,我看到了这一点 [[NSUserDefaults standardUserDefaults]同步]方法返回YES 数据保存在类中,但当我重新启动应用程序时,用户默认值为空 即使我将这些plist文件从备份复制到Preferences目录,应用程序也不会看到它 当然,plis

我有一个针对OSX的沙盒应用程序,我在
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似乎解决了这个问题。