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