在OSX中为多个用户安装的系统首选项窗格中的UserDefaults

时间:2009-07-22 19:48:53

标签: objective-c cocoa preferences nsuserdefaults

我有一个仅限后台的应用程序,它通过系统首选项中的首选项窗格进行控制。要在pref窗格和app之间进行通信,我使用分布式通知。用户默认值通过[NSUserDefaults addSuiteNamed:]共享。这一切都很顺利。

当系统首选项窗格提示时,用户为“所有用户”安装pref窗格时会出现此问题。在这种情况下,prefs将写入~/Library/Preferences/,与“仅为此用户”安装时相同。 (我认为这是正确的行为。) 但是,当prefpane读取默认密钥时,prefpane似乎在查看/Library/Preferences/,而不是在用户的主目录中。

总结一下:

  • prefs窗格安装在:〜/ Library / PreferencePanes /
    • 默认值写入:〜/ Library / Preferences /
    • 默认值读取:〜/ Library / Preferences /
  • prefs窗格安装在:/ Library / PreferencePanes /
    • 默认值写入:〜/ Library / Preferences /
    • 默认值为:/ Library / Preferences /

有没有人可以解决出错的地方?

谢谢, Kolja

1 个答案:

答案 0 :(得分:3)

您的设计与Growl基本相同。我们使用CFPreferences来读取和写入用户的首选项。请参阅GrowlPreferencesControllerthe macros in GrowlDefinesInternal.h。分发通知会提示后台应用程序和prefpane重新读取首选项。

(尽管不要把它当作我们这样做,但是在Core Foundation中使用NSNumber,NSDictionary等也没关系,而且阅读起来要容易得多。)