簡體   English   中英

在目標C中使用枚舉中的命名值

[英]Using named value from enum in Objective C

我有一個枚舉定義如下:

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

我想做的是將一個方法的字符串值傳遞給另一個方法(modifierCmd),然后創建相關的Modifier傳遞給單獨的方法。

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

應該行嗎?

謝謝

不。 但是,您可以使用一個函數:

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)];
}

我認為這行不通,因為數據類型確實不同。 實際上,當NSString是對象時,枚舉實際上是整數。 您可以使用if else來檢查修飾符。 但我建議直接傳遞修飾符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM