как получить объект члена класса по имени строки? - PullRequest
2 голосов
/ 22 июня 2011

Если у меня есть член класса, скажем, UIImageView в моем viewcontroller:

UIImageView* imageView = self.memberImageView1;

Есть ли способ получить этот член по строке?что-то вроде:

UIImageView* imageView =[self.getMember(@"memberImageView1")];

Конечно, я говорю о решении с синтаксисом target-c, а не с пользовательским.Спасибо.

Ответы [ 3 ]

6 голосов
/ 22 июня 2011

Я рекомендую Код значения ключа до отражения.

UIImageView* imageView =[self valueForKey:@"memberImageView1"];
1 голос
/ 23 июня 2011

Просто для полноты, полный сумасшедший способ сделать это будет следующим:

UIImageView *imageView;

SEL selector = NSSelectorFromString(@"memberImageView1");
NSMethodSignature *signature = [self instanceMethodSignatureForSelector:selector];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];

[invocation setSelector:selector];
[invocation setTarget:self];
[invocation invoke];
[invocation getReturnValue:&imageView];

Пожалуйста, не стесняйтесь переходить к Daily WTF.

1 голос
/ 22 июня 2011

Для этого можно использовать отражение:

Справочник по Objective-C

Другой способ - использовать словарь со строкой в ​​качествеключ, указывающий на переменную класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...