“默认读取”的程序化等效项是什么?

时间:2018-11-03 23:59:24

标签: macos nsuserdefaults

当我在命令行上执行defaults read时,我会获得超过6000行的键。当我在一个程序(非沙盒)中枚举UserDefaults.standard.dictionaryRepresentation()时,只能得到大约50行值。

defaults read的基础版本是什么?如何在程序中获取 all 个NSUserDefaults键?

1 个答案:

答案 0 :(得分:1)

defaults read(不带任何域参数)将读取当前用户的所有域。 UserDefaults.standard.dictionaryRepresentation()仅读取当前应用程序的域。

我不知道您为什么要阅读所有域,但是您可以使用CFPreferences API来进行阅读。首先,调用CFPreferencesCopyApplicationList(kCFPreferencesCurrentUser, kCFPreferencesAnyHost)以获取所有应用程序域(包括全局域kCFPreferencesAnyApplication)。请注意,不推荐使用此方法,而我不知道有任何替代方法。然后,您遍历这些并调用CFPreferencesCopyMultiple(nil, eachAppIDInTurn, kCFPreferencesCurrentUser, kCFPreferencesAnyHost)