Я использую следующий код для перебора всех свойств объекта. Я успешно извлек property name
как char
, но не знаю, как получить property value
типа id
. Любые идеи о том, как мне этого добиться?
objc_property_t *allProperties = class_copyPropertyList([currentObject class], &allPropertyCount);
for (unsigned int i = 0; i < allPropertyCount; i++) {
objc_property_t property = allProperties[i];
const char * propertyName = property_getName(property);
}
=============================================== =========================================
РЕДАКТИРОВАТЬ: Спасибо всем за отличные комментарии и ответы. Некоторые из вас спрашивали, зачем мне это нужно. Ну, вот причина:
У меня есть несколько объектов одного класса. Допустим, класс Person
и его экземпляры - Мария, Джон и Дэвид. Свойства каждого объекта задаются следующим образом:
mary.age = [NSNumber numberWithInt:20];
john.age = [NSNumber numberWithInt:45];
david.age = [NSNumber numberWithInt:20];
mary.gender = @"female";
john.gender = @"male";
david.gender = @"male";
Моя цель - найти универсальный способ группировки объектов на основе заданного имени свойства Например. это создаст 2 группы [Дэвид и Мэри] и [Джон]:
[self groupBaseDataObjects:self.persons withPropertyName:"age"];
и это:
[self groupBaseDataObjects:self.persons withPropertyName:"gender"];
также создаст 2 группы [Джон и Дэвид] и [Мэри]