当我在命令行上执行defaults read
时,我会获得超过6000行的键。当我在一个程序(非沙盒)中枚举UserDefaults.standard.dictionaryRepresentation()
时,只能得到大约50行值。
defaults read
的基础版本是什么?如何在程序中获取 all 个NSUserDefaults键?
答案 0 :(得分:1)
defaults read
(不带任何域参数)将读取当前用户的所有域。 UserDefaults.standard.dictionaryRepresentation()
仅读取当前应用程序的域。
我不知道您为什么要阅读所有域,但是您可以使用CFPreferences API来进行阅读。首先,调用CFPreferencesCopyApplicationList(kCFPreferencesCurrentUser, kCFPreferencesAnyHost)
以获取所有应用程序域(包括全局域kCFPreferencesAnyApplication
)。请注意,不推荐使用此方法,而我不知道有任何替代方法。然后,您遍历这些并调用CFPreferencesCopyMultiple(nil, eachAppIDInTurn, kCFPreferencesCurrentUser, kCFPreferencesAnyHost)
。