Kann jemand einen Dictionary-Typ PSMultiValueSpecifier von NSUserDefault in ein UIPickViewer-Steuerelement lesen und Änderungen mithilfe des iPhone SDK 3.0 in NSUserDefaults speichern? Wenn ja, können Sie einen bestimmten Code veröffentlichen, um dies effizient zu tun?Lesen und Aktualisieren eines Wörterbuchtyps PSMultiValueSpecifier von NSUserDefault
0
A
Antwort
1
Der folgende Code wandelt die PSMultiValueSpecifier-Werte und -Titel in ein nützliches Wörterbuch um, das Sie mit Ihrem UIPickViewer verwenden können.
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;
es zu sparen, müssen Sie den Schlüssel und nicht der Wert des Wörterbuchs speichern.
[settings setObject:dictionaryKey forKey:@"mySelection_preference"];