Mac应用程序的NSUserDefaults数据存储在哪里?


74

我正在使用NSUserDefaults在我的应用程序中存储一些数据。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"dummy string" forKey:@"lastValue"];
[prefs synchronize];

为了进行测试,我需要查看系统偏好设置plist文件,我的NSUserDefaults数据保存在Mac上。

我知道iOS应用程序用户默认值存储在哪里,但我不知道mac应用程序。Mac应用程序的NSUserDefaults数据存储在哪里?

Answers:


171

可以在多个地方找到它们:

~/Library/Preferences/com.example.myapp.plist
~/Library/SyncedPreferences/com.example.myapp.plist

如果是沙盒

~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist
~/Library/Containers/com.example.myapp/Data/Library/SyncedPreferences/com.example.myapp.plist

15
绝对不要直接读取或编辑这些Plist。它们不一定是NSUserDefaults类读取或写入的内容。相反,请始终在终端中使用defaults readdefaults write。此线程底部的完整说明:devforums.apple.com/message/894120
T空白

屏幕保护程序呢?
Juanjo Conti 2015年

我太晚阅读@TravisB的警告,并删除了我的应用程序的plist文件。我能够重新启动计算机并重建应用程序以取回文件。
VinceFior

@JuanjoConti“ Flurry”屏幕保护程序包含在其中~/Library/Preferences/ByHost/com.apple.Flurry.<HARDWARE-UUID>.plist
Klaas

要添加到@TBlank的答案中,如果您只是想删除应用程序的用户默认值,则不应通过删除plist文件本身来做到这一点-我自己的测试表明,这些元素将保留在缓存中。要删除,请遵循superuser.com/questions/907798/…中
Vivek Gani

20

在中~/Library/Preferences/com.example.myapp.plist


6
@ahmadbaig:随着沙盒的出现,这不再是完全准确的,您应该更改erkanyildiz的接受答案
houbysoft 2012年

3

(Xcode 7.3.1,macOS 10.11.6)

对于其他,如果您使用的是应用组

    if let prefs = NSUserDefaults(suiteName: "group.groupApps")  {
       ...
    }

plist文件将在这里:

〜/ Library / Group容器/组。groupApps /库/首选项/group.groupApps.plist


1

在Sierra上,我在这里找到了数据:~/Library/Application Support/


0

在操场上进行尝试时,这些数据的另一个可能位置会发挥作用。我正在使用XCode 8.3和Swift 3在Playground中使用UserDefaults进行实验,并希望查看生成的plist文件。经过一些侦探工作(UserDefaults文件的文件名中包含包标识符,并在Playground中调用Bundle.main.bundleIdentifier给出了XCode标识符),令我惊讶的是,UserDefaults数据已添加到:

~/Library/Preferences/com.apple.dt.Xcode

换句话说,键和值将添加到XCode首选项文件中!我仔细检查了密钥,想出了非常不可能的字符串,并且确实在其中添加了它们。我没有勇气尝试使用XCode已经使用的某些键,但是这里的谨慎似乎很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.