Использование именованного значения из enum в Objective C - PullRequest
0 голосов
/ 13 июля 2010

У меня есть перечисление, определенное следующим образом:

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

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

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

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

Спасибо

Ответы [ 2 ]

4 голосов
/ 13 июля 2010

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

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 голос
/ 13 июля 2010

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

...