Для C / C ++ и Objective-C оператор case должен иметь фиксированные значения - «сводится к целому числу (чтение значения) » во время компиляции
Ваши константы не являются настоящей "константой", потому что это переменная, и я думаю, что ее можно изменить с помощью указателя - то есть &KNameIndex
Обычно константы определяются как enum
enum {
KNameIndex = 0,
kAnotherConstant = 42
};
Если вы используете C ++ или Objective-C ++ (с расширением .mm в качестве расширения файла), вы можете использовать оператор const как
const int KNameIndex = 0;