objective-c - 检查变量是否属于枚举值

标签 objective-c ios enums

有没有办法将一组值分配给一个枚举并检查一个变量是否在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/

相关文章:

ios - 大应用编译时间长

objective-c - 如何让 CATextLayer 平滑其文本?

ios - 使用 UITabBar 和 UINavigationBar

iphone - 将数据 UITableViewCell 传递到 UITableViewCell

javascript - redux(?) 请求的 $$typeof 属性缺失

python-2.7 - 如何将文档字符串放在 Enums 上?

ios - 将 Objective C 代码块转换为 Swift 闭包

iphone - 该应用是否需要由用户运行才能获得推送通知?

c++ - 在 C++ 中键入安全(r)位标志?

objective-c - 我可以在 -dealloc 中调用 [self retain] 吗?或者,如何确保 dealloc 发生在主线程上?