我的问题是,当我使用快速枚举从数组中加载对象时,如下所示:
for(SetOfObjects *set in _myArray){
NSLog (@"%@"[set anObject];
}
它会毫无问题地打印出我指定的对象,但是当需要将这些对象分配给标签的NSArray时。最后一个对象返回0。 像这样:
for(SetOfObjects *set in _myArray){
for(UILabel *label in _arrayOfLabels){
int i = [set intObject];
NSString *string = [NSString stringWithFormat:@"%i",i];
label.text = string;
}
}
我想,我在这里出错了。代码有效,但问题是所有标签都设置为0。
欢迎任何提示。
答案 0 :(得分:4)
您在每个SetOfObjects
实例中迭代标签,而实际上您希望同时迭代两个数组,这是使用快速枚举无法完成的。
而是恢复为两个数组的索引访问:
NSInteger count = [_myArray count];
NSAssert([_arrayOfLabels count] == count, @"Different array sizes!");
for (NSInteger index = 0; index < count; index++) {
SetOfObjects *set = _myArray[index];
UILabel *label = _arrayOfLabels[index];
int i = [set intObject];
NSString *string = [NSString stringWithFormat:@"%i",i];
label.text = string;
}
请注意断言以检查两个数组的大小是否相同。
编辑:糟糕,i
是一个糟糕的变量名称,可供索引选择...