从NSUserDefault读取并更新Dictionary类型PSMultiValueSpecifier

时间:2009-08-18 02:43:41

标签: objective-c iphone uipickerview nsuserdefaults

有谁知道如何轻松地将NSUserDefault中的Dictionary类型PSMultiValueSpecifier读入UIPickViewer控件并使用iPhone SDK 3.0将更改保存回NSUserDefaults?如果是这样,你可以发布一些特定的代码来有效地做到这一点吗?

1 个答案:

答案 0 :(得分:1)

以下代码将PSMultiValueSpecifier值和标题转换为可以与UIPickViewer一起使用的漂亮字典。


NSString* settingsBundle = [[[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"] stringByAppendingPathComponent:@"Root.plist"];

NSDictionary* rootPlist = [NSDictionary dictionaryWithContentsOfFile:settingsBundle];

if (rootPlist == nil)
    return nil;

NSArray* specifiers = [rootPlist objectForKey:@"PreferenceSpecifiers"];

NSDictionary *multiValueSpecifier = nil;

for (NSDictionary *specifier in specifiers)
{
    if ([[specifier objectForKey:@"Key"] isEqualToString:speficierKey] == YES &&
        [[specifier objectForKey:@"Type"] isEqualToString:@"PSMultiValueSpecifier"] == YES)
    {
        multiValueSpecifier = specifier;
        break;
    }
}

if (multiValueSpecifier == nil)
    return nil;

NSArray* titlesArray = [multiValueSpecifier objectForKey:@"Titles"];
NSArray* valuesArray = [multiValueSpecifier objectForKey:@"Values"];

NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:titlesArray 
                                                       forKeys:valuesArray];

return dictionary;

NSDictionary* rootPlist = [NSDictionary dictionaryWithContentsOfFile:settingsBundle]; if (rootPlist == nil) return nil; NSArray* specifiers = [rootPlist objectForKey:@"PreferenceSpecifiers"]; NSDictionary *multiValueSpecifier = nil; for (NSDictionary *specifier in specifiers) { if ([[specifier objectForKey:@"Key"] isEqualToString:speficierKey] == YES && [[specifier objectForKey:@"Type"] isEqualToString:@"PSMultiValueSpecifier"] == YES) { multiValueSpecifier = specifier; break; } } if (multiValueSpecifier == nil) return nil; NSArray* titlesArray = [multiValueSpecifier objectForKey:@"Titles"]; NSArray* valuesArray = [multiValueSpecifier objectForKey:@"Values"]; NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:titlesArray forKeys:valuesArray]; return dictionary;

要保存它,您需要保存KEY而不是字典的值。