【发布时间】:2014-05-30 06:33:50
【问题描述】:
我试图将UILabels 放在NSDictionary 中,我使用标签作为键,但问题是,并非视图内的所有标签都需要,@ 的标签所需的 987654323@s 也在枚举中。
所以我想要做的是,检查标签是否存在于枚举中,然后将其添加到字典中,标签为键。
for (NSObject *obj in [self.formView subviews]) {
if ([obj isKindOfClass:[UILabel class]]) {
UILabel *label = (UILabel *)obj;
// Here is where I want to add the check before I do this line
labelDict[[NSString stringWithFormat:@"%d",label.tag]] = label;
}
}
对于未来的读者:
如果你也像上面的代码一样迭代一个 NSArray 类型的对象,你应该使用 NSArray 函数enumerateObjectsUsingBlock 代替,这就是答案,它看起来不是更漂亮吗:
[self.formView.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[UILabel class]]) {
UILabel *label = (UILabel *)obj;
if ( label.tag >= TEXTFIELDTYPE_MIN_VAL && label.tag <= TEXTFIELDTYPE_MAX_VAL ) {
labelDict[[NSString stringWithFormat:@"%d",label.tag]] = label;
}
}
}];
【问题讨论】:
-
这是不可能的。您至少可以做的是创建一个 for 循环,其中包含标签数字的最小值的开始数字,然后是标签数字的最大值的结束数字,然后将其添加到字典中
-
你的枚举是顺序的吗?如果是,您只需检查它是否在该范围内。
-
是的,我是从 100 到 121 这样做的,因为我当前的代码在将它添加到字典之前依赖于 for(int a=100; a
标签: objective-c enums