Как прочитать все объекты NSDictionary для ключа в массив - PullRequest
3 голосов
/ 27 ноября 2010


У меня есть словарь "playerDict", который считывает данные из списка, где есть имена (myKey) с девятью связанными объектами для каждого ключа.

Я пытаюсь прочитать все объекты для определенного ключа (myKeys) в NSMutableArray (theObjects).Я прочитал ссылку на класс и поищу в интернете, но не могу понять эту, возможно, очень простую, проблему.

Среди всех других тестов, которые я сделал, я попробовал следующее, но он возвращает ключ в объекты, а не объекты.

theObjects = [playerDict objectForKey: myKeys];

Кто-нибудь, кто мог бы дать подсказку?

Вот код, который создал dict,я снял его:

NSArray *objs = [NSArray arrayWithObjects:[NSNumber numberWithBool:playerObject.diffHard],[NSNumber numberWithBool:playerObject.diffMedium],
             [NSNumber numberWithBool:playerObject.diffEasy],[NSNumber numberWithBool:playerObject.currentGame],
             [NSNumber numberWithInt:playerObject.currentGameQuestion],[NSNumber numberWithInt:playerObject.currentGameRightAnswer],
             [NSNumber numberWithInt:playerObject.currentGameType],[NSNumber numberWithInt:playerObject.nrOfType0Games],
             [NSNumber numberWithInt:playerObject.type0Result], nil];
NSDictionary *newPlayerDict = [NSDictionary dictionaryWithObjectsAndKeys:objs, keyString, nil];

Ответы [ 2 ]

4 голосов
/ 27 ноября 2010

Попробуйте valueForKey:

0 голосов
/ 27 ноября 2010

Вы можете хранить только один элемент на ключ в NSDictionary.Если вам нужно объединить несколько элементов для одного и того же ключа, вам необходимо сначала добавить каждый из элементов в NSArray (или NSSet), который вы вместо этого установите в качестве объекта в словаре.может быть полезно, если вы разместили код, который создает словарь.

Обновление: Похоже, вы уже делаете это.Итак:

NSArray *myObjs=[playerDict objectForKey:keyString];

получит ваш массив.И это:

BOOL diffHard=[[myObjs objectAtIndex:0] boolValue];
BOOL diffMedium=[[myObjs objectAtIndex:1] boolValue];

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

...