0

NSUserDefault から Dictionary タイプ PSMultiValueSpecifier を UIPickViewer コントロールに簡単に読み取り、iPhone SDK 3.0 を使用して変更を NSUserDefaults に保存する方法を知っている人はいますか? もしそうなら、これを効率的に行うための特定のコードを投稿できますか?

4

1 に答える 1

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;

それを保存するには、辞書の値ではなくキーを保存する必要があります。

[settings setObject:dictionaryKey forKey:@"mySelection_preference"];

于 2010-11-10T09:10:47.060 に答える