Cocoa PreferencePane用户默认值始终存储在com.apple.systempreferences.plist中

时间:2011-12-19 15:35:35

标签: xcode macos cocoa preferences

我正在Xcode 4.1中开发一个PreferencePane,我似乎无法将偏好值存储在除com.apple.systempreferences.plist之外的任何内容中。

我已在MyApp-Info.plist文件中为我的应用设置了Bundle Identifier,但这似乎没有被提取。

我已经广泛搜索了答案,但找不到任何答案。您可以按如下方式轻松复制问题:

在XCode中:

  1. 创建新的PreferencePane项目
  2. 将NSTextField添加到.xib
  3. 将文本字段值绑定到共享用户默认值控制器,使用任何键名称
  4. 构建项目
  5. 右键单击Products下的图标,然后选择“使用外部编辑器打开”以安装到系统偏好设置(仅限此用户)
  6. 在系统偏好设置中

    1. 打开您的pref窗格,然后在文本框中键入任意值。
    2. 看到您的偏好值保存在〜/ Library / Preferences / com.apple.systempreferences.plist
    3. 但为什么不用指定的包标识符创建一个新的plist文件,并将首选项值存储在那里?

      这是Xcode 4.1 / Mac OS 10.7中的错误吗?任何帮助非常感谢!

2 个答案:

答案 0 :(得分:2)

您可以使用NSUserDefaults访问捆绑包ID的默认值:

[[NSUserDefaults standardUserDefaults] persistentDomainForName:@"yourBundleID"];

这将返回包含您的包的首选项的字典。然后,您可以使用setPersistentDomain:forName: NSUserDefaults方法存储更新的首选项词典。

答案 1 :(得分:0)

不是错误 - 首选项存储在与应用程序对应的plist中,而不是包中。您必须使用Core Foundation prefs system来读取和编写特定于您的捆绑包的首选项。