有没有办法将一组值分配给一个枚举并检查一个变量是否在objective-c的枚举中具有它的值。
如果对象存在于数组中,则类似于获取数组中对象的索引。我想给出一个常见的行为,当在我的表格 View 中点击某些索引(可能不按顺序)时,想要避免 if-ing 所有索引,希望我可以使用枚举样式。
最佳答案
像大多数编程语言一样,Objective-C 不为原始类型提供“类型成员资格”测试 - 仅针对对象类型(例如 isKindOfClass:
) - 所以使用 enum
不会解决你的问题。
但是,鉴于您正在考虑 enum
首先,听起来您有一小部分要检查的固定值。在这种情况下,您可以只使用静态数组,例如就像是:
static NSUInteger indices[] = { 2, 42, 57 };
此类数组中的值的数量由
sizeof(indices) / sizeof(NSUInteger
给出。您可以编写一个简单的循环或二进制搜索来测试成员资格。如果你想使用对象,那么
NSSet
是一个不错的选择,如果在执行过程中数字会发生变化,那么 NSMutableSet
.例如。NSSet *indices = [NSSet setWithObjects:@2, @42, @57, nil];
然后您使用
member:
测试成员资格:if ([indices member:@indexToTest] != nil) ...
(注意:与
NSArray
不同,containsObject:
的 NSSet
的规范是 而不是 说它使用 isEqual:
,因此在这里使用 member:
。)
关于objective-c - 检查变量是否属于枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212147/