1

Root.plistアプリの一部として、ファイルに次の設定がありますSettings.bundle

<dict>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Type</key>
            <string>PSMultiValueSpecifier</string>
            <key>Title</key>
            <string>Title</string>
            <key>Key</key>
            <string>my_key</string>
            <key>DefaultValue</key>
            <string>default_value</string>
            <key>Titles</key>
            <array>
                <string>Default Value</string>
                <string>First</string>
                <string>Second</string>
                <string>Third</string>
                <string>Fourth</string>
            </array>
            <key>Values</key>
            <array>
                <string>default_value</string>
                <string>one</string>
                <string>two</string>
                <string>three</string>
                <string>four</string>
            </array>
        </dict>
    </array>
    <key>StringsTable</key>
    <string>Root</string>
</dict>

にアクセスして、特定の設定の(つまり、文字列表現)を効果的に決定し、テキストビューのテキストをその値に割り当てることができるようにしたいTitlesと思います。ValuesTitle

例えば、

*defaultValue = [NSUserDefaults valueForKey:@"my_key"]; 
// let's say it's 'one'
textView setText:[[self getTitleForValue:defaultValue]]; 
// i want getTitleForValue to return 'First'

Root.plistファイルを自分で解析する必要がありますか?次に、タイトルと値の間のマッピングを手動で構築/調整しますか?

設定リストは十分に長いので、でルックアップを実行した後にifステートメントを記述しNSUserDefaultsたくないので、ルックアップできるソリューションを確実に見つけたいと思います。

4

2 に答える 2

1

タイトルの場合:

NSLog(@"%@",[[[[yourdic objectForKey:@"PreferenceSpecifiers"] objectAtindex:0] objectForKey:@"Titles"] objectAtIndex:0]); 

//また

NSLog(@"%@",[[[yourdic objectForKey:@"PreferenceSpecifiers"] objectAtindex:0] objectForKey:@"Titles"]); 

価値について:

NSLog(@"%@",[[[[yourdic objectForKey:@"PreferenceSpecifiers"] objectAtindex:0] objectForKey:@"Values"] objectAtIndex:0]);

//また

NSLog(@"%@",[[[yourdic objectForKey:@"PreferenceSpecifiers"] objectAtindex:0] objectForKey:@"Values"]);
于 2013-02-28T08:40:06.157 に答える
0

興味のある人のために、これは私が最終的に得たものです

NSString *bPath = [[NSBundle mainBundle] bundlePath];
NSString *settingsPath = [bPath stringByAppendingPathComponent:@"Settings.bundle"];
NSString *plistFile = [settingsPath stringByAppendingPathComponent:@"Root.plist"];
NSDictionary *settingsDictionary = [NSDictionary dictionaryWithContentsOfFile:plistFile];
NSArray *preferencesArray = [settingsDictionary objectForKey:@"PreferenceSpecifiers"];
NSArray *titles = [[preferencesArray objectAtIndex:0] objectForKey:@"Titles"];
NSArray *values = [[preferencesArray objectAtIndex:0] objectForKey:@"Values"];
int index = [values indexOfObject:currentValue];
if( index > -1 ){
    return [titles objectAtIndex:index];
}
return @"Default Title";
于 2013-03-01T00:31:36.907 に答える