номер
Во-первых, перечисления являются конструкциями типа компиляции.
Во-вторых, у вас есть проблема с областью видимости. Потому что вы определяете тип перечисления в области действия if
и else
. Он не будет виден вне оператора if..else..
.
Вам нужно будет найти другой способ дифференциации индексации по состоянию.
Обновление на основе последующих действий ОП по вопросу:
ОК, вам нужна какая-то карта. Например, вы можете сделать:
Определите свой список.
enum {
Form_FirstName = 0,
Form_NamePrefix,
Form_LastName,
Form_Email,
Form_Phone
};
Предполагая, что в вашем классе есть indexes
ivar с обычными @property
и @synthesize
, настройте свои индексы:
if (foo>0) {
self.indexes = [NSArray arrayWithObjects:[NSNumber numberWithInt:Form_FirstName],[NSNumber numberWithInt:Form_NamePrefix],[NSNumber numberWithInt:Form_LastName],[NSNumber numberWithInt:Form_Email],[NSNumber numberWithInt:Form_Phone],nil];
}
else {
self.indexes = [NSArray arrayWithObjects:[NSNumber numberWithInt:Form_FirstName],[NSNumber numberWithInt:Form_LastName],[NSNumber numberWithInt:Form_Email],[NSNumber numberWithInt:Form_Phone],nil];
}
В других местах, когда вам нужно перевести перечисляемое поле в индекс:
NSInteger index = [self.indexes indexOfObject:[NSNumber numberWithInt:<Form Enumeration Value>]];