Объект настройки задачи среды выполнения Objective-C для NSMutableDictionary

Я кодирую довольно сложную систему, которая использует много метаданных для управления динамическими объектами. Я использую различные функции времени выполнения Objective-C. Я хочу добавить материал в изменяемые словари, которые являются свойствами различных классов. Я хочу сделать это, зная тип класса и имя свойства, но я не хочу "жестко кодировать" назначение. Если бы я жестко закодировал это, я мог бы сделать это:

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

но я хочу сделать что-то вроде этого:

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

Как я могу ссылаться на изменяемое свойство словаря, если во время выполнения у меня есть только имя свойства?


person whatdoesitallmean    schedule 07.06.2012    source источник


Ответы (1)


Вы можете использовать -valueForKey: для запуска метода:

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

Или же вы можете использовать performSelector:

SEL dictGetter = NSSelectorFromString(@"whateverMethodName");
NSMutableDictionary* dict = [inst performSelector:dictGetter];
[dict setObject:o forKey:k];
person Tom Dalling    schedule 07.06.2012