【问题标题】:Set a (different) property based on a value in a variable? [duplicate]根据变量中的值设置(不同的)属性? [复制]
【发布时间】:2011-11-27 22:51:27
【问题描述】:

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

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

这一行给出了我在 switch 语句中使用的发件人标签

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;

任何人都可以在语法方面提供帮助吗?

谢谢!

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    直接翻译你想要的

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        将您的属性 selectedPaintColor1selectedPaintColor2 等组合成一个 NSMutableArray 并将其用作属性。现在的语法是:

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

        请注意,如果您的 senderid 类型,则必须先将其转换为 (UIView)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-06
          • 1970-01-01
          • 2022-11-22
          • 2011-06-07
          • 2022-09-23
          • 2016-11-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多