0

我有10个UIImageViews,它们是我的“GoalsViewController”类中的游戏徽章,它们设置为hidden = YES;在Interface Builder中。使用KVC从字典中获取属性值

我想让它们隐藏= NO;当我的“GameViewController”类达到某些级别时。

我被卡住了,因为我不确定我的解决方案是否会工作。

我至今是:

GoalsVC.h我有一个

NSMutableDictionary *goalsDictionary; 

,并在GoalsVC返回goalsDictionary

-(NSMutableDictionary *)goalsDictionary; 

那么一个getter方法。 m我分配并初始化目标词典

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

我创建的ImageView

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

goalImage.hidden = YES; 

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

我重复这同样的方法调用9次改变的关键,不同的层次。

现在,我意识到我无法从字典中获得隐藏的属性吗?方法setValue:需要一个对象,forKey:接受一个字符串。

那么当我的GameControllerView发生某些事情时,是否有更好的方法告诉GoalsViewController将隐藏属性设置为NO?

回答

1

我不知道我是否正确理解你,但是你在找什么?

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

如果不让我知道,我可以再试一次。

1

当然,您可以获取作为字典中值的对象的属性。您可以使用valueForKeyPath:方法,如下所示:

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

PS。当然,在属性为BOOL等原始属性的情况下,您可以转换结果并相应地分配值。

+0

+1这应该被接受回答 – matm 2013-01-29 10:17:23