为了使绑定到NSUserDefault键的NSMenuItem显示已注册的默认值,您需要执行的操作顺序是什么?
我正在注册默认值,但是我的NSMenuItems没有显示我在启动应用程序时注册的默认值。
答案 0 :(得分:2)
我早上大部分时间都在追逐这个问题,而那里的大部分答案似乎都是零碎的,所以我想分享。
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];
}
这解决了我。