У меня есть перечисление, определенное так:
//ModelClass.h
typedef enum { Automatic, Manual, Off } MyModes;
Позже, в ViewController, у меня есть оператор switch внутри метода, который включает переменную моего типа перечисления.Мой оператор switch выглядит следующим образом:
//MyViewController.m
#import "ModelClass.h"
-(void) dryer:(MyClass *)m didChangeMode:(MyModes) newMode
{
//Code within an instance method, utilizing the above enumeration
switch (newMode) //newMode is an instance of MyMode enum.
{
case Automatic:
//Some code...
break;
case Off:
//Some code...
break;
case Manual:
//Some code...
break;
}
}
Вышеуказанный оператор switch был скопирован / вставлен из моего кода, и все, что я сделал, это заменил функциональный код комментариями //Some code...
.
XCodeпо-прежнему выдает предупреждение в строке switch (newMode)
о том, что «значения перечисления« Автоматически »,« Вручную »и« Выкл. »не обрабатываются в коммутаторе».
Кроме того, при каждом выражении case
I 'я получаю сообщение об ошибке «Выражение не является целочисленным константным выражением», даже если это так, поскольку это перечисление.
Как это исправить?Странно то, что у меня есть другое перечисление в заголовке ModelClass
(состоящее из 4 перечисляемых элементов), определенное в следующей строке после перечисления MyModes
, и в моем контроллере представления у меня есть другой метод, который выполняет точно такой же типпереключателя / кейс операции.Я не получаю ни одного предупреждения или ошибки при использовании этого перечислителя.
Что может происходить?
РЕДАКТИРОВАТЬ
Я положилобъявление метода во фрагменте кода.Переменная newMode
является параметром метода.Кроме того, вышеупомянутый другой перечислитель, который работает правильно, также передается в другой метод в качестве параметра.