enum и NSDictionary для определения списка допустимых элементов в Какао - PullRequest
0 голосов
/ 05 сентября 2011

Я пытаюсь понять, как определить список допустимых элементов для класса: Допустим, у меня есть класс People, и мне нужно принять только 3 строки в качестве допустимых имен @"Luke" @"Paul" @"Mark".

Я подумал использовать комбинацию enum и NSDictionary таким образом (но я, очевидно, не уверен в правильности этого метода):

//INTERFACE*********************
typedef enum {  
 Luke,Paul,Mark
}ValidName;

@interface Person : NSObject{  
  // some code

}

@end


//IMPLEMENTATION*******************
@interface Person(private){
 NSMutableDictionary *_validNamesDict;
}
@end

@interface Person:NSObject
- (id)init
{
    self = [super init];
    if (self) {
        _validNamesDict = [[NSMutableDictionary alloc] init];
        [_validNamesDict setObject: @"Luke" forKey:[NSNumber numberWithInt: Luke]];
        [_validNamesDict setObject: @"Paul" forKey:[NSNumber numberWithInt: Paul]];
        [_validNamesDict setObject: @"Mark" forKey:[NSNumber numberWithInt: Mark]];
    }

    return self;
}

//Some code .... 

Теперь в остальной части класса я обращаюсь к этому имени с помощью:

[_validNameDict objecWithKey:[NSNumber numberWithInt: Luke]]; 

Я почти уверен, что это не лучший метод. Не могли бы вы предложить мне правильный способ справиться с этой ситуацией? Я читал кое-что об использовании ключевого слова extern и определения статической переменной в классе ... это может быть лучший метод?

1 Ответ

3 голосов
/ 05 сентября 2011

Я думаю, что вы хотите здесь set , а не map - то есть NSSet, а не NSDictionary.

Допустим, у вас есть набор validNames, и вы хотите определить, есть ли имя n в наборе.Как только ваш набор будет инициализирован, просто сделайте следующее:

BOOL nameIsValid = [validNames containsObject:n];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...