Можно ли получить доступ ко всем свойствам объекта, используя идентификатор?
У меня есть объект: 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.