Как мне перечислить на NSString? - PullRequest
0 голосов
/ 12 июля 2011

Как мне перечислить на NSString?

пример того, что я пытаюсь сделать:

enum eCat{
    dog,
    cat,
    mouse,
    bunny
};
@interface

@implementation 
....
enum eCat Cate;
NSString *yoda = @"mouse";
Cate = [yoda intValue];
NSLog(@"Hello: %d",Cate);

желая получить результат

Hello: 2

спасибо

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Вы должны создать отображение (строка → перечисление) самостоятельно. Одна из возможностей будет выглядеть примерно так (отказ от ответственности: только скомпилированный мозгом):

#define CAT_(a, b) a##b
#define CAT(a, b) CAT_(a, b)
#define E(en) [NSNumber numberWithInt:en], CAT(@, #en),
NSDictionary *mapping = [NSDictionary dictionaryWithObjectsAndKeys:
                          // ...
                          E(mouse)
                          E(bunny)
                          nil];

NSNumber *result = [mapping objectForKey:@"mouse"];
if (!result) {
    // ... oops
} else {
    enum eCat cate = [result intValue];
}
1 голос
/ 12 июля 2011

Нет прямой поддержки такого перечисления в Objective-C.

Вместо этого создайте массив строк и найдите запись:

    static NSArray* enumeration=nil;
    if(!enumeration){
           enumeration=[[NSArray arrayWithObjects:@"AAA",@"BBB",@"CCC",nil] retain];
    }

затем используйте его позже:

    NSInteger i=[enumeration indexOfObject:@"BBB"];
    /*  i is now 1 */

Это не имеет отношения к вашему вопросу, но, пожалуйста, не начинайте имя переменной с заглавной буквы, например, Cate. Это против соглашения Objective-C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...