Можно ли получить доступ ко всем свойствам объекта, используя идентификатор?

У меня есть объект: aObject, он имеет свойства a,b,c.

Я могу получить доступ к свойствам, используя:

aObject.a

aObject.b

aObject.c

Можно ли получить доступ ко всем свойствам объекта, используя идентификатор? такие как

[aObject indexOf:0]
[aObject indexOf:1]
[aObject indexOf:2]

или что-то нравится.

Приветствую любой комментарий

2 ответа

Решение

KVC (Key Value Coding) позволит вам установить значения свойств, используя метод [anObject setValue:aValue forKey:@"a"],

Если вы действительно хотите перебирать каждое свойство, устанавливая его значение, то вам нужно перейти к среде выполнения target-c.

unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([anObject class], &outCount);
for (i = 0; i < outCount; i++) {
    objc_property_t property = properties[i];
    const char * name = property_getName(property);

    [anObject setValue:anyValue forKey:[NSString stringWithUTF8String:name]];
}
free(properties);

Даже если я никогда не использовал его, кажется, что это возможно с помощью метода class_copyPropertyList.

Другие вопросы по тегам