Получение значения свойства из словаря с помощью KVC - PullRequest
0 голосов
/ 23 марта 2012

У меня есть десять UIImageViews, которые являются значками для игры в моем классе "GoalsViewController", для них установлено значение hidden = YES;в Интерфейсном Разработчике.

Я хочу сделать их скрытыми = НЕТ;когда в моем классе "GameViewController" достигнуты определенные уровни.

Я застрял, потому что я не уверен, что решение, которое у меня есть, сработает.

На данный момент у меня есть:

В GoalsVC.h У меня есть

NSMutableDictionary *goalsDictionary;

и метод получения, который возвращает goalDictionary

-(NSMutableDictionary *)goalsDictionary;

Затем в GoalsVC.m Я выделяю и инициализирую goalDictionary

goalsDictionary = [[NSMutableDictionary alloc]initWithCapacity:10];

Я создаю imageView

UIImageView *goalImage = [[UIImageView alloc]init]; 

goalImage.hidden = YES; 

[goalsDictionary setValue:goalImage forKey:@"PassedLevelOne"];

Я повторяю это жевызов метода еще девять раз меняя ключ на разные уровни.

И теперь я понимаю, что не могу получить свойство, такое как скрытое из словаря, могу ли я?Метод setValue: принимает объект, а forKey: принимает строку.

Так есть ли лучший способ сказать GoalsViewController установить скрытое свойство в NO, когда что-то происходит в моем GameControllerView?

Ответы [ 2 ]

1 голос
/ 04 апреля 2012

Конечно, вы можете получить свойство объекта, которое является значением в словаре.Вы можете использовать метод valueForKeyPath:, например:

id myProperty = [goalsDictionary valueForKeyPath:@"PassedLevelOne.hidden"];

PS.Конечно, в случае, когда свойство является примитивом типа BOOL, вы можете привести результат и присвоить значение соответственно.

1 голос
/ 04 апреля 2012

Я не уверен, что правильно вас понимаю, но это то, что вы ищете?

UIImageView *passedLevelOneImageView = (UIImageView *)[goalsDictionary objectForKey:@"PassedLevelOne"];
passedLevelOneImageView.hidden = NO;

Если нет, дайте мне знать, и я могу попробовать еще раз.

...