NSDictionary - как вернуть ключ в виде строки - PullRequest
6 голосов
/ 28 ноября 2011

У меня есть следующий лист:

<dict>
<key>New item</key>
<dict>
    <key>document</key>
    <string>driving licence</string>
    <key>Overview</key>
    <string>a driving licence is required.......</string>
</dict>

, если я хочу получить объект, я написал бы что-то вроде этого:

 myString = [somedictionary objectForKey:@"Overview"];

как насчетесли я хочу получить "обзор" из моего plist ???Надеюсь, это понятно ..... Пожалуйста, не голосуйте "за" ... Я все еще учусь!; -)

РЕДАКТИРОВАННАЯ ВЕРСИЯ:

Лучше быть более конкретным:

у меня есть этот код

 for (NSDictionary *playDictionary in playDictionariesArray) {
        Play *play = [[Play alloc] init];
        play.name = [playDictionary objectForKey:@"playName"];

, который является примером кода Apple: http://developer.apple.com/library/ios/#samplecode/TableViewUpdates/Introduction/Intro.html

В этом примере строка воспроизведения возвращает имя игры в разделе заголовкано я хочу изменить его и получить «Ключ» в заголовке (в данном случае это «PlayName»).

СПАСИБО ВСЕМ: ЭТО КАК Я ИСПРАВЛЕНО:

 NSMutableArray *anArray = [[NSMutableArray alloc] init];
    [anArray addObject:@"Overview"];
    [anArray addObject:@"pre-requirements"];
    [anArray addObject:@"where"];
    [anArray addObject:@"what"];


    //Use a for each loop to iterate through the array
    for (NSString *s in anArray) {

            Play *play = [[Play alloc] init];
            play.name = s;

Ответы [ 3 ]

17 голосов
/ 28 ноября 2011

Вы можете получить массив всех ключей в словаре, используя [dict allKeys]. Вы можете получить массив всех ключей, значение которых является конкретным объектом, используя [dict allKeysForObject:object]. Вы можете обрабатывать ключи один за другим в цикле следующим образом:

for (NSString *key in dict) {
    ...
}
3 голосов
/ 28 ноября 2011

попробуйте это, и если это работает, дайте мне знать ..

NSMutableArray* result = [NSMutableArray array];
for (NSString* key in dictionary) {

    [result addObject:key];
    // write to a dictionary instead of an array
    // if you want to keep the keys too.

}
return result;
0 голосов
/ 28 ноября 2011

Если вы хотите получить ключ для данного объекта, вы можете попробовать метод:

- (NSArray *)allKeysForObject:(id)anObject

Используя его так:

myString = [[myDict allKeysForObject:@"a driving licence is required......."] objectAtIndex:0];

Просто обратите внимание, что этовозвращает NSArray, потому что вы можете иметь более одного ключа для указанного объекта.

...