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

ahm*_*aig 63 macos cocoa objective-c plist nsuserdefaults

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

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"dummy string" forKey:@"lastValue"];
[prefs synchronize];
Run Code Online (Sandbox Code Playgroud)

出于测试目的,我需要查看系统偏好设备plist文件,其中我的NSUserDefaults数据在Mac上保存.

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

erk*_*diz 149

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

~/Library/Preferences/com.example.myapp.plist
~/Library/SyncedPreferences/com.example.myapp.plist
Run Code Online (Sandbox Code Playgroud)

如果是沙盒的话

~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist
~/Library/Containers/com.example.myapp/Data/Library/SyncedPreferences/com.example.myapp.plist
Run Code Online (Sandbox Code Playgroud)

  • 永远不应该直接阅读或编辑这些Plists.它们不一定是`NSUserDefaults`类读取或写入的内容.相反,总是在终端中使用`defaults read`和`defaults write`.该主题底部的完整说明:https://devforums.apple.com/message/894120 (12认同)

dus*_*uff 20

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

  • @ahmadbaig:随着沙盒的出现,这已不再完全准确,你应该改变对erkanyildiz的接受答案 (6认同)

hst*_*tdt 7

(Xcode 7.3.1、macOS 10.11.6)

对于其他,如果您正在使用应用程序组

if let prefs = NSUserDefaults(suiteName: "group.groupApps")  {
    ...
}
Run Code Online (Sandbox Code Playgroud)

plist 文件将位于此处:

~/Library/Group Containers/group.groupApps/Library/Preferences/group.groupApps.plist
Run Code Online (Sandbox Code Playgroud)