没有。
首先,枚举是编译类型构造。
其次,您有一个范围界定问题。因为您是在if 和else 的范围内定义枚举类型。它在if..else.. 语句之外不可见。
您需要找到一种不同的方法来根据状态区分您的索引。
根据 OP 的后续问题进行更新:
好的,您需要某种地图。例如你可以这样做:
定义你的枚举。
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>]];