【问题标题】:Where is a Mac Application's NSUserDefaults Data Stored?Mac 应用程序的 NSUserDefaults 数据存储在哪里?
【发布时间】:2011-12-20 10:19:42
【问题描述】:

我正在使用 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


    【解决方案1】:

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

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

    【讨论】:

    • 永远不要直接阅读或编辑这些 Plist。它们不一定是 NSUserDefaults 类读取或写入的内容。相反,请始终在终端中使用 defaults readdefaults write。本帖底部的完整解释:devforums.apple.com/message/894120
    • 屏幕保护程序怎么样?
    • 我阅读@TravisB 的警告为时已晚,并删除了我应用的 plist 文件。我能够重新启动计算机并重建我的应用程序以取回文件。
    • @JuanjoConti “Flurry”屏幕保护程序有它们在~/Library/Preferences/ByHost/com.apple.Flurry.<HARDWARE-UUID>.plist
    • 要添加到@TBlank 的答案,如果您只是想删除应用程序的用户默认值,则不应通过删除 plist 文件本身来执行此操作 - 我自己的测试表明这些元素会保持缓存。要删除,请按照superuser.com/questions/907798/…中的建议
    【解决方案2】:

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

    【讨论】:

    • @ahmadbaig:随着沙盒的出现,这不再完全准确,您应该将接受答案更改为 erkanyildiz 的
    【解决方案3】:

    (Xcode 7.3.1,macOS 10.11.6)

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

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

    plist 文件将在此处:

    ~/库/组容器/组。 groupApps/Library/Preferences/group.groupApps.plist

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-02
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 1970-01-01
          • 2011-09-05
          • 2014-12-05
          • 2014-04-03
          相关资源
          最近更新 更多