Это не отвечает на ваш вопрос, но оно связано и безумно полезно.
Допустим, у меня есть коллекция (NSArray
, NSSet
и т. Д.) Объектов определенного типа, и у этих объектов есть метод / свойство, называемое displayValue
, которое каким-то образом превращает объект в более удобный формат для отображения. Чтобы преобразовать мою коллекцию объектов в коллекцию их displayValues, мне нужно только сделать:
NSArray * objects = ...;
NSArray * objectDisplayValues = [objects valueForKey:@"displayValue"];
Единственное предостережение в том, что если displayValue
возвращает примитив (int
, float
, структуру и т. Д.), Он будет помещен в соответствующий контейнер NSValue
.
Так что теоретически вы могли бы сделать:
NSArray * numbers = ...;
NSArray * intValues = [numbers valueForKey:@"intValue"];
Но поскольку intValue
будет помещен в NSNumber
, вы вернетесь туда, откуда начали.
Как я уже сказал, это не совсем ответ, но он очень полезен.