Как вы называете свойство setter по имени? - PullRequest
5 голосов
/ 29 декабря 2010

Я задал связанный вопрос, но решил разделить его на собственный вопрос. Посмотрите код ниже для вызова свойства getter .

SEL propSelector = NSSelectorFromString(propertyName);
NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[[target class]instanceMethodSignatureForSelector:propSelector]];
[inv setSelector:propSelector];
[inv setTarget:target];
[inv invoke];
float value;
[inv getReturnValue:&value];

Я бы хотел сделать то же самое, но вызвать свойство SETTER . Я также хотел бы избежать ручной обработки имени сеттера путем создания строки @"setPropertyName:". Итог - можно ли использовать селектор, созданный в этой строке, для вызова setter ?

SEL propSelector = NSSelectorFromString(propertyName);

Ответы [ 2 ]

10 голосов
/ 29 декабря 2010

Использовать кодирование значения ключа.

Т.е. [someObject setValue: anObjectValue forKey: @"foo"];

0 голосов
/ 29 декабря 2010

Прочитав ваш второй вопрос ранее сегодня, вот что я могу придумать:

Невозможно использовать его непосредственно в качестве установщика.Получатель не принимает никаких аргументов, поэтому у вашего селектора никогда не будет двоеточия, поэтому он никогда не сработает.

Самое простое, что нужно сделать, это определить ваши методы установки как foo: вместо setFoo:.Таким образом, вам нужно будет только добавить двоеточие (это довольно дешево, требует только две дополнительные строки)

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