2010-07-13 23 views
0

使用從枚舉命名值我已枚舉定義如下:在目標C

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

我想要做的是從一個方法傳遞一個字符串值到另一個例如(modifierCmd)並創建相關的Modifier傳遞給一個單獨的方法。

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

應該這樣工作嗎?

謝謝

回答

4

沒有。你可以使用一個函數,但:

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

我不認爲它可以工作,因爲數據類型是真的不同。當NSString是一個對象時,枚舉實際上是整數。您可以使用其他方式來檢查修飾符。但我建議直接傳遞修飾符。