taf*_*rel 10 ios settings.bundle ios8 ios-app-extension
我正在尝试在ios 8上为自定义键盘扩展创建设置包.我已将设置包添加到键盘扩展目标.然后当加载键盘视图时,我试图以下列方式访问设置包.
BOOL autoCapitalizationEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:@"autoCapitalizationEnabled"];
Run Code Online (Sandbox Code Playgroud)
结果总是0,似乎程序无法访问设置包文件.
有没有人有扩展设置捆绑之前的问题?顺便说一下,这个东西与设置包的默认值无关,因为每次我在键盘启动前禁用并启用此属性以强制使用默认值.
虽然你已经在Setting.bundle上的每个项目上设置了DefaultValue,但它不会写在你的NSUserDefaults上,所以当你从NSUserDefaults检索时,它将返回一个null(在这种情况下,一个“0”,或NO,无论如何) 。
请按照以下步骤在首次启动时设置 NSUserDefaults 的设置。
首先,您将检查是否已经检查并设置了默认值:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if ([userDefaults boolForKey:@"PreferenceFirstSetup"]) {
//return if you already done the job once.
return;
}
Run Code Online (Sandbox Code Playgroud)
如果没有,让我们设置默认值......
[userDefaults setBool:YES forKey:@"PreferenceFirstSetup"];
NSString *settingsPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Settings.bundle"];
NSString *rootPath = [settingsPath stringByAppendingPathComponent:@"Root.plist"];
NSDictionary *settingsDictionary = [NSDictionary dictionaryWithContentsOfFile:rootPath];
NSArray *preferencesArray = [settingsDictionary objectForKey:@"PreferenceSpecifiers"];
for (NSDictionary *item in preferencesArray) {
NSString *key = [item objectForKey:@"Key"];
id defaultValue = [item objectForKey:@"DefaultValue"];
if (key && defaultValue)
[userDefaults setObject:defaultValue forKey:key];
}
//Save on disk
[userDefaults synchronize];
Run Code Online (Sandbox Code Playgroud)
现在,您应该能够访问默认值。希望能帮助到你!
归档时间: |
|
查看次数: |
861 次 |
最近记录: |