2012-09-23 4 views
2

В настоящее время я разрабатываю покерную игру для iOS в Objective-C, но у меня проблемы с использованием . Я хотел бы создать enum под названием «Костюм» и использовать его в своем классе «Карточка», поскольку каждая карта будет иметь свою колоду и костюм, такой как «Ace Spade».Создайте и используйте Enum в Objective-C

Где я могу определить enum?

typedef enum Suit { 
    Diamond, 
    Club, 
    Heart, 
    Spade 
} 

Кроме того, какой тип класса я должен определить костюм enum в (напр. NSObject, UIView и т.д.)? И после импорта Suit.h в Card.h, могу ли я определить его как собственность непосредственно в Card.h?

Я не очень хорошо знаком с Objective-C, поэтому любая помощь приветствуется.

+1

Разве вы не предполагают, чтобы добавить точку с запятой в конце концов? И почему вы определяете его с помощью typedef, не добавляя в конце псевдоним к перечислению? – TheAmateurProgrammer

+1

И чтобы решить вашу проблему, если класс карты является единственным классом, использующим Suit, то вы можете просто добавить Suit в заголовок вашей карты. Нет строгого правила следовать за тем, где вы предположили, чтобы перечислить, просто поместите его там, где классы, которые требуют этого, могут легко получить к нему доступ. – TheAmateurProgrammer

+1

"для класса заголовка Suit, какой класс должен быть? (Подкласс чего, NSObject или ..?" <- перечисления не являются классами. –

ответ

7
typedef enum { 
    Clubs, Diamonds, Hearts, Spades 
} Suit; 

typedef int Value; 

struct Card { 
    Suit suit; 
    Value value; 
}; 

или, если вы действительно думаете Card должен быть тяжеловесом класс, то

@interface Card : NSObject 
@property Suit suit; 
@property Value value; 
@end 
+3

Вы также можете использовать макрос 'NS_ENUM' для более чистого ввода ваших перечислений. Посмотрите в заголовках UIKit , например 'UIView.h' - они используют его для всех перечислений UIView. –

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