Rib*_*die 4 macos nsuserdefaults
尝试以编程方式执行"默认写入"命令在OS X中执行的操作.我似乎无法弄清楚如何为我正在寻找的域获取正确的首选项字典.我可以在下面的代码中获得域的一些首选项,但有问题的首选项似乎不在dict中.
为什么/如何在终端命令中但不在代码中?它们不是标准用户默认值吗?似乎无法找到它们.
编辑:这些是我试图输入代码的命令:
defaults write com.apple.dock mcx-expose-disabled -bool true
defaults write com.apple.dashboard mcx-disabled -bool true
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *dockDict = [[defaults persistentDomainForName:@"com.apple.dock"] mutableCopy];
NSMutableDictionary *dashDict = [[defaults persistentDomainForName:@"com.apple.dashboard"] mutableCopy];
[dockDict setValue:YES forKey:@"mcx-expose-disabled"];
[defaults setPersistentDomain:dockDict forName:@"com.apple.dock"];
[defaults setPersistentDomain:dashDict forName:@"com.apple.dashboard"];
Run Code Online (Sandbox Code Playgroud)
为此可能更容易使用Core Foundation,例如,
CFPreferencesSetAppValue( CFSTR("mcx-expose-disabled"), kCFBooleanTrue, CFSTR("com.apple.dock") );
CFPreferencesAppSynchronize( CFSTR("com.apple.dock") );
Run Code Online (Sandbox Code Playgroud)
唯一的问题是你在这里的线路:
[dockDict setValue:YES forKey:@"mcx-expose-disabled"];
Run Code Online (Sandbox Code Playgroud)
这应该是
[dockDict setValue:[NSNumber numberWithBool:YES] forKey:@"mcx-expose-disabled"];
Run Code Online (Sandbox Code Playgroud)
Objective-C 不会将原始类型的值“自动装箱”到对象中。
而且,编译器应该给你一个警告,说你不能传递YES给setValue:forKey:. 您应该检查编译器发出的每个警告!这就是警告的目的!
| 归档时间: |
|
| 查看次数: |
1914 次 |
| 最近记录: |