我有一个Object:aObject,它有属性a,b,c。
我可以使用以下方式访问属性:
aObject.a
aObject.b
aObject.c
是否可以使用id访问对象的所有属性?比如
[aObject indexOf:0]
[aObject indexOf:1]
[aObject indexOf:2]
或类似的东西。
欢迎任何评论
答案 0 :(得分:2)
即使我从未使用它,似乎可以使用class_copyPropertyList方法。
答案 1 :(得分:1)
KVC(键值编码)允许您使用方法[anObject setValue:aValue forKey:@"a"]
设置属性值。
如果您真的想要遍历每个属性,设置其值,那么您将需要下拉到objective-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);