2012-06-07 40 views
0

我正在編寫一個相當複雜的系統,它使用大量的元數據來管理動態對象。我正在使用各種Objective-C運行時功能。我想添加東西到各種類別內的屬性的可變字典。我想這樣做,我知道類的類型,我知道屬性名稱,但我不想'硬編碼'的任務。如果我硬編碼它,我可以這樣做:針對NSMutableDictionary的Objective-C運行時問題設置對象

[[(myknownclass*)localClassObjectInstance knownDictionary] setObject:value forKey:key]; 

但我想要做的是這樣的:

[[unknownClassObjectInstance {aStringContainingTheDictionaryName}] setObject:value forKey:key]; 

我如何引用可變字典屬性,當我只有名字的屬性在運行時?

回答

0

您可以使用-valueForKey:運行的方法:

[(NSMutableDictionary*)[inst valueForKey:@"whateverMethodName"] setObject:o forKey:k]; 

或者,你可以使用performSelector:

SEL dictGetter = NSSelectorFromString(@"whateverMethodName"); 
NSMutableDictionary* dict = [inst performSelector:dictGetter]; 
[dict setObject:o forKey:k]; 
+0

布里爾,非常感謝。 – whatdoesitallmean