根据变量中的值设置(不同)属性?

时间:2011-09-29 18:45:05

标签: objective-c

  

可能重复:
  Objective C Equivalent of PHP’s “Variable Variables”

我有一个UIButton动作,它抓住了按钮发送者

这一行为我提供了我在switch语句中使用的sender标签

int senderTag = [sender tag];

然后我必须做...

switch (senderTag) {
    case 1:
       brain.selectedPaintColor1 = myColor;
       break;
    case 2:
       brain.selectedPaintColor2 = myColor;
       break;
    case 3:
       brain.selectedPaintColor3 = myColor;
       ...

我真正希望能够做的是使用标签来设置像这样的变量属性名称

[brain.selectedPaintColor%i,senderTag] = myColor;

任何人都可以协助语法来做到这一点吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

直接翻译您想要的内容

NSString *key = [NSString stringWithFormat:@"selectedPaintColor%i", senderTag];

[brain setValue:myColor forKey:key];

答案 1 :(得分:1)

或者,由于上面的赋值方法实际上被转换为对setter方法的调用,因此可以构建一个选择器数组并从索引数组中调用一个方法。 (不过现在不会扼杀语法 - 选择器总是让我的头受伤。)

(事实上,有一种动态查找选择器的方法,因此您可以构建选择器名称字符串并查找它,而不是预构建数组。)

答案 2 :(得分:0)

将您的媒体资源selectedPaintColor1selectedPaintColor2等合并到NSMutableArray中并将其用作媒体资源。现在的语法是:

[brain.paintColors replaceObjectAtIndex:sender.tag withObject:myColor];

请注意,如果您的sender类型为id,则必须先将其(UIView)投放。