2010-07-13 2 views
0

Я перечисление определяется следующим образом:Использование имени значение из перечисления в Objective C

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

Что я хотел бы сделать, это передать значение строки из одного метода к другому, например (modifierCmd) и создать соответствующий Модификатор для перехода к отдельному методу.

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

Должно ли это работать?

Thanks

ответ

4

Nope. Вы можете использовать функцию:

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

Я не думаю, что это может работать, потому что тип данных действительно отличается. Enum фактически является целым числом, когда NSString является объектом. Вы можете использовать if else, чтобы проверить модификатор. Но я рекомендую передать модификатор напрямую.

Смежные вопросы