iphone:Settings.bundle返回空值

我正在使用xCode 3.2,然后移动到xCode 4.2并从Settings.bundle获取一些值…它工作正常。

虽然我需要在Settings.bundle中编辑一些值,但Root.plist文件没有显示,所以我按照下面的过程,但没有做任何改变的文件。

1) Click on the Settings.Bundle file, go over to the utilities window, and look in the File Inspector. 2) Using the drop-down, change the file type to 'Application Bundle' 

之后,我可以看到Root.plist,但现在无法在应用程序中获得它的值。 其实是值而不是价值。

下面是Settings.bundle的代码和图像

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; host = [defaults stringForKey:@"meter_preference"]; if(host == nil) { host = @"10.20.20.1"; DDLogError(@"Meter host is nil from NSUserDefaults, defaulting to %@", host); } 

在这里输入图像说明

我得到了解决scheme,只需在applicationDidFinishLaunchingWithOptions中调用以下代码即可初始化用户默认值。 它的工作

将第一行的somePropertyYouExpectreplace为您存储在用户默认值中的属性。

 if (![[NSUserDefaults standardUserDefaults] objectForKey:@"somePropertyYouExpect"]) { NSString *mainBundlePath = [[NSBundle mainBundle] bundlePath]; NSString *settingsPropertyListPath = [mainBundlePath stringByAppendingPathComponent:@"Settings.bundle/Root.plist"]; NSDictionary *settingsPropertyList = [NSDictionary dictionaryWithContentsOfFile:settingsPropertyListPath]; NSMutableArray *preferenceArray = [settingsPropertyList objectForKey:@"PreferenceSpecifiers"]; NSMutableDictionary *registerableDictionary = [NSMutableDictionary dictionary]; for (int i = 0; i < [preferenceArray count]; i++) { NSString *key = [[preferenceArray objectAtIndex:i] objectForKey:@"Key"]; if (key) { id value = [[preferenceArray objectAtIndex:i] objectForKey:@"DefaultValue"]; [registerableDictionary setObject:value forKey:key]; } } [[NSUserDefaults standardUserDefaults] registerDefaults:registerableDictionary]; [[NSUserDefaults standardUserDefaults] synchronize]; } 

从你的代码,尝试这个认为..

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; host = [defaults stringForKey:@"meter_preference"]; if(!host == nil) { host = @"10.20.20.1"; DDLogError(@"Meter host is nil from NSUserDefaults, defaulting to %@", host); } 

要么

查看这个链接可能会帮助你…

iPhone – 读Setting.bundle返回错误的值

NSUserDefaults设置包Plist