【问题标题】:Using named value from enum in Objective C在Objective C中使用枚举中的命名值
【发布时间】:2010-07-13 09:43:44
【问题描述】:

我有一个枚举定义如下:

typedef enum modifiers {
                        modifierNone=-1,
                        modifierCmd,
                        modifierShift,
                        modifierOption
                        } Modifier;

我想做的是将一个字符串值从一个方法传递给另一个方法,例如 (modifierCmd) 并创建相关的修饰符以传递给一个单独的方法。

- (void)methodOne:(NSString *)stringValue {
    Modifier mod = (Modifier)stringValue;
    [self methodTwo:mod];
}

这应该有效吗?

谢谢

【问题讨论】:

    标签: iphone objective-c enums typedef


    【解决方案1】:

    不。不过,您可以使用函数:

    Modifier makeModifier(NSString *s)
    {
        if ([s isEqualToString:@"modifierNone"]) {
            return modifierNone;
        } else if ([s isEqualToString:@"modifierCmd"]) {
            return modifierCmd;
        } /* etc... */
    }
    
    - (void)methodOne:(NSString *)stringValue
    {
        [self methodTwo:makeModifier(stringValue)];
    }
    

    【讨论】:

      【解决方案2】:

      我不认为它可以工作,因为数据类型确实不同。当 NSString 是一个对象时,枚举实际上是整数。您可以使用 if else 来检查修饰符。但我建议直接传递修饰符。

      【讨论】:

        猜你喜欢
        • 2010-12-12
        • 1970-01-01
        • 2015-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多