这是对象,并具有以下属性:
NSString attri1;
NSString attri2;
NSString attri3;
NSString attri4;
如果我想列出这些attri,我可以致电
NSLog(aObj.attri1);
但是我可以将1作为变量从循环中调用它吗?这是否可以在objective-c中这样做?
for(int i = 0; i < [array count]; i++)
{
NSLog(aObj.attri1); //is this possible to become one line, dynamic generated variable
}
谢谢。顺便问一下,这个功能叫做什么?谢谢。
答案 0 :(得分:3)
如果要动态访问对象的属性,可以使用Key Value Coding来完成。
如果该类与KVC兼容,就像大多数NS类一样,您可以使用valueForKey:
或valueForKeyPath:
来访问带有字符串的属性:
for(int i = 0; i < [array count]; i++) {
NSLog([[aObj valueForKey:[NSString stringWithFormat:@"attrib%d", i]]);
}
答案 1 :(得分:1)
您正在寻找的功能通常称为"variable variables." Objective-C没有此功能。实际上,大多数语言都没有。
好消息是你实际上并不需要这个功能。四个变量命名相同的东西,最后一个数字基本上等同于一个数组,只有结构是隐式的而不是显式的。只需将attri
设为一个数组,然后就可以询问它是否有编号的项目。