设置捆绑值未在iPhone上正确链接

Mas*_*son 3 iphone plist ios settings.bundle

我有一个问题,我过去几天一直在努力.我有一个设置包,root.plist,它包含一些用户首选项.它有三个多值菜单项.一个返回一个布尔值,另外两个返回一个数字.

当我[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]在控制台中调用并检查它时,只有属性列表中的第一个项目显示其值.另外两个明显缺席.结果,当我尝试检索这些值时,我得到零.

更奇怪的是,设置包在iPhone上的"设置"应用中看起来是正确的.唯一不起作用的是值没有通过.就我的应用而言,其他两个多值菜单项甚至都不存在.

任何建议都非常感谢.

Chr*_*ner 6

我多次使用这段代码applicationDidFinishLaunchingWithOptions来初始化我的用户默认值.

    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]; 
} 
Run Code Online (Sandbox Code Playgroud)