使用可变路径访问属性

时间:2015-03-14 12:20:55

标签: ios objective-c

由于Google对此保持沉默,我不确定我是否正确形成了标题。

我想使用路径访问属性(或对象或实例),路径由已知路径+变量路径组成。让我们说有5个属性:pr1,pr2 ... pr5。为了排练他们我使用:

for (int i = 1; i <=5; i++) {...}

接下来我想使用i获取该属性。这样的事情:self.pr+i;。在Objective C中执行此操作的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

for (NSInteger i = 1; i <=5; i++)
{
 // access read
    id property = [self valueForKey:[NSString stringWithFormat:@"pr%ld",(long)i]];

  // write
    id someValue;
    [self setValue:someValue forKey:[NSString stringWithFormat:@"pr%ld",(long)i]];

  // remember pr1 must be a self property.
}

答案 1 :(得分:1)

通常,虽然您没有描述确切的情况,但您可以使用KVC:

id myVar = [self valueForKey:myVarName];

所以一旦你知道你只需要创建字符串:

NSString *myVarName = [NSString stringWithFormat:@"pr%d", i];