Почему я не могу использовать свою константу в операторе switch - case в Objective-C? [error = Expression не является целочисленным постоянным выражением]

Итак, у меня проблема с использованием постоянной переменной в следующем операторе switch в Objective-C.

У меня есть Constants.h со следующим:

// Constants.h    
extern NSInteger const TXT_NAME;

И Constants.m как:

// Constants.m
#import "Constants.h"

NSInteger const TXT_NAME        = 1;

Затем в TabBasic.m я пытаюсь использовать эту константу в операторе switch-case:

// TabBasic.m

#import "TabBasic.h"
#import "Constants.h"

... code ...

- (IBAction)saveValue:(id)sender {
    if ([sender isKindOfClass: [UITextField class]]) {
        UITextField *txtField = (UITextField *) sender;

        switch (txtField.tag) {
            case TXT_NAME:
                NSLog(@"Set property name to: %@", txtField.text); 
                break;
        }
    }
}

Но, к сожалению, это дает мне следующие два ошибки в строке "case TXT_NAME:":

  • Выражение не является целочисленным постоянным выражением
  • Метка регистра не сводится к целочисленной константе

Кто-нибудь знает, что я делаю неправильно? Переменная tag в UITextField возвращает NSInteger, поэтому я не вижу проблемы ...

Спасибо за вашу помощь!

14
задан Jules 5 July 2011 в 15:36
поделиться