Использование типа enum в Objective C - PullRequest
0 голосов
/ 17 марта 2012

Я объявил тип данных enum как:

typedef enum TagTypes
{
   BUTTON_TAG_1 = 1,
   BUTTON_TAG_2,
   BUTTON_TAG_3,
   NEW_TAG

}ButtonTag;

typedef enum TagType
{
   LABEL_TAG_1 = 1,
   LABEL_TAG_2,
   NEW_TAG
}LabelTag;

Я хотел найти соответствующий тег кнопки или метки через значение этого тега как

(clickedbutton.tag == ButtonTag.BUTTON_TAG1) или (changingLabel.tag == LabelTag.LABEL_TAG_1)

но этот синтаксис не представляется возможным в Obj C, он выдает сообщение об ошибке "Ожидаемый идентификатор" или ")"

Есть ли способ выбрать tagNames, указав tagDatatype, например:

LabelTag.LABEL_TAG_2, ButtonTag.BUTTON_TAG2, ...

Спасибо за любую помощь

clickedbutton.tag == BUTTON_TAG1 будет работать, но я предпочитаю использовать его как tagName.tagValue, так что я могу иметь одинаковые tagValues ​​для разных наборов теговскажем tagValue "NEW_TAG" как в LabelTag, так и в ButtonTag.

Ответы [ 4 ]

5 голосов
/ 17 марта 2012

Я считаю, что он следует тому же соглашению, что и в C, где вы просто пишете

if (clickedbutton.tag == BUTTON_TAG1)

без указания типа перечисления. Вы должны только указать тип, когда это переменная.

0 голосов
/ 18 марта 2012

Если вы действительно хотите использовать форму LabelTag :: LABEL_TAG_2, вы можете использовать режим target-c ++ (изменить расширение файла на .mm) и сделать это:

class FirstEnum
{
    public: 
    enum { a, b, c } ;
} ;

class SecondEnum
{
    public:
    enum { a, b, c } ;
} ;

Тогда в вашем коде можно сослаться на LabelTag::a например.

0 голосов
/ 17 марта 2012

вы можете использовать switch-case

switch(LabelTag)
{
   case : LABEL_TAG_1

   break;

   case : LABEL_TAG_2

   break;
}
0 голосов
/ 17 марта 2012

Посмотрите на заголовки Apple.Они просто ставят перед всеми записями enum префикс с именем enum, например, UIViewAnimationCurveEaseInOut в enum UIViewAnimationCurve.Я предлагаю вам сделать то же самое.

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