0

我正在编写一个相当复杂的系统,它使用大量元数据来管理动态对象。我正在使用各种 Objective-C 运行时特性。我想将东西添加到可变字典中,这些字典是各种类中的属性。我想在知道类类型并且知道属性名称的情况下执行此操作,但我不想对分配进行“硬编码”。如果我对其进行硬编码,我可以这样做:

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

但我想做的是这样的:

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

当我在运行时只有属性的名称时,如何引用可变字典属性?

4

1 回答 1

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];
于 2012-06-07T08:32:25.183 回答