Установка и доступ к перечислению Typedef - PullRequest
3 голосов
/ 26 октября 2010

У меня есть это до объявления интерфейса в моем заголовке MainView.h.

typedef enum { UNKNOWN, CLEAR, NIGHT_CLEAR, CLOUDY, NIGHT_CLOUDY } Weather;

Тогда я объявил это так:

Weather weather;

Затем сделал аксессор:

@property Weather weather;

И синтезировал это.

У меня вопрос: как я могу использовать это в другом классе, чтобы он не падал? Я импортировал заголовок для MainView. Я пытался использовать это так:

MainView* myView = (MainView*)self.view;

[myView setWeather: CLEAR];

Он не выдаёт мне никаких ошибок в XCode, но вылетает при запуске кода, говоря:

-[UIView setWeather:]: unrecognized selector sent to instance *blah*

Я что-то здесь не так делаю?

Ответы [ 3 ]

6 голосов
/ 26 октября 2010

«Погода» - это тип, а не переменная.

Итак, вы хотите что-то вроде этого:

Weather theWeather = [mainView weather];
if (theWeather == CLEAR)
{
<do something>
}

Где MainView имеет ivar:

 Weather weather;
1 голос
/ 26 октября 2010

Вы должны удалить * в Weather* weather.weather должно быть целым числом, а не указателем.

1 голос
/ 26 октября 2010

В C погода будет определением типа, а не переменной.

Посмотрите на typedef enum в Objective C

...