问题描述
|
我正在做一个项目,我必须在settings.bundle中检索一些值。为此,我必须以这种方式检索默认值。
我正在访问下
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
stringObject = [defaults objectForKey:@\"Key_Value\"];
但是当我尝试打印stringObject时
NSLog(@\"%@\",stringObject);
然后,它总是打印null。
我已使用键\“ Key_Value \”将一个字符串值保存在settings.bundle中。但是它返回Null。
告诉我我在哪里做错了
解决方法
检查您是否以此方式存储了您的价值:-
NSUserDefaults *pref3=[NSUserDefaults standardUserDefaults];
[pref3 setObject:*yourstring* forKey:@\"Key_Value\"];
[NSUserDefaults resetStandardUserDefaults];
您的检索代码是正确的。请确保stringObject为NSString类型。
, 调用此功能将解决您的问题
- (void)registerDefaultsFromSettingsBundle {
// this function writes default settings as settings
NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@\"Settings\" ofType:@\"bundle\"];
if(!settingsBundle) {
NSLog(@\"Could not find Settings.bundle\");
return;
}
NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@\"Root.plist\"]];
NSArray *preferences = [settings objectForKey:@\"PreferenceSpecifiers\"];
NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]];
for(NSDictionary *prefSpecification in preferences) {
NSString *key = [prefSpecification objectForKey:@\"Key\"];
if(key) {
[defaultsToRegister setObject:[prefSpecification objectForKey:@\"DefaultValue\"] forKey:key];
NSLog(@\"writing as default %@ to the key %@\",[prefSpecification objectForKey:@\"DefaultValue\"],key);
}
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsToRegister];
}