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

问题描述 投票:0回答:5

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

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

出于测试目的,我需要查看 Mac 上保存 NSUserDefaults 数据的系统偏好设置 plist 文件。

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

objective-c macos cocoa plist nsuserdefaults
5个回答
188
投票

它们可以在不止一个地方找到:

~/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

20
投票

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


7
投票

(Xcode 7.3.1,macOS 10.11.6)

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

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

plist 文件将位于此处:

~/Library/Group Containers/group.groupApps/Library/Preferences/group.groupApps.plist

2
投票

在 Sierra 上,我在这里找到了数据:

~/Library/Application Support/


1
投票

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

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

换句话说,键和值被添加到 XCode 首选项文件中!我通过提出非常不可能的键字符串进行了双重检查,它们确实被添加到了那里。我没有勇气尝试使用 XCode 已经使用的一些键,但在这里谨慎似乎是好的。

© www.soinside.com 2019 - 2024. All rights reserved.