为了使绑定到 NSUserDefault 键的 NSMenuItem(s) 显示注册的默认值,您需要执行的操作顺序是什么?
我正在注册默认值,但我的 NSMenuItems 没有显示我在启动应用程序时注册的默认值。
为了使绑定到 NSUserDefault 键的 NSMenuItem(s) 显示注册的默认值,您需要执行的操作顺序是什么?
我正在注册默认值,但我的 NSMenuItems 没有显示我在启动应用程序时注册的默认值。
我花了大部分上午的时间来追查这个问题,而那里的大多数答案似乎都是零碎的,所以我想分享一下。
1)将您的菜单项绑定到:
2) 在调用 awakeFromNib 之前注册您的默认值,我在 AppDelegate 的 + (void)initialize 方法中完成了它。(applicationDidFinishLaunching、(id)init、applicationWillFinishLaunching,这些都不起作用)
+ (void)initialize {
[self setupDefaults];
}
3)使用 NSNumbers 为 BOOL 值初始化您的默认字典,尽管那里的示例显示它们已初始化为 NSStrings:
NSString *const KEY_DEDUPLICATION_TARGET = @"Deduplication_Target";
NSString *const KEY_DEDUPLICATION_SOURCE = @"Deduplication_Source";
+ (void)setupDefaults {
NSDictionary* userDefaultsValuesDict = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], KEY_DEDUPLICATION_TARGET,
[NSNumber numberWithBool:YES], KEY_DEDUPLICATION_SOURCE,
nil];
// set them in the standard user defaults
[[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsValuesDict];
}
这为我解决了它。