So I have an issue with using a constant variable in the following switch statement in Objective-C.

I have Constants.h with the following:

// Constants.h    
extern NSInteger const TXT_NAME;

And Constants.m as:

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

NSInteger const TXT_NAME        = 1;

Then in TabBasic.m I am trying to use this constant in a switch-case statement:

// 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;
        }
    }
}

But unfortunately it is giving me the following two errors on the "case TXT_NAME:" line:

  • Expression is not an integer constant expression
  • Case label does not reduce to an integer constant

Does anyone know what I'm doing wrong? The "tag" variable of a UITextField returns an NSInteger, so I don't see the issue...

Thanks for your help!

Edit
Report