iPhone SDK 3.0 を使用して、Dictionary 型の PSMultiValueSpecifier を NSUserDefault から UITableView コントロールに簡単に読み取り、変更を NSUserDefaults に保存する方法を知っている人はいますか? もしそうなら、これを効率的に行うための特定のコードを投稿できますか?
1 に答える
0
最初に、バンドル内の指定子の値にアクセスしやすくするために、次のコードを使用してそれらを辞書に変換しました。
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;
UI から何かを選択した場合、辞書の VALUE ではなく KEY を格納する必要があります。
[[NSUserDefaults standardUserDefaults] setObject:dictionaryKey forKey:@"myMultiValueSpecifier_preference"];
于 2010-11-10T09:03:38.870 に答える