Ios 将NSMutableArray对象加载到标签集合中
我的问题是,当我使用快速枚举从数组中加载对象时,如下所示:Ios 将NSMutableArray对象加载到标签集合中,ios,objective-c,ios7,Ios,Objective C,Ios7,我的问题是,当我使用快速枚举从数组中加载对象时,如下所示: for(SetOfObjects *set in _myArray){ NSLog (@"%@"[set anObject]; } 它将毫无问题地打印出我指定的对象,但是,当需要将这些对象分配给一组标签时。最后一个对象返回为0。 像这样: 我想,我在这里出了问题。代码可以工作,但问题是所有标签随后都设置为0 欢迎任何提示。您正在迭代每个SetOfObject实例中的标签,而实际上您希望同时迭代两个数组,这是使用
for(SetOfObjects *set in _myArray){
NSLog (@"%@"[set anObject];
}
它将毫无问题地打印出我指定的对象,但是,当需要将这些对象分配给一组标签时。最后一个对象返回为0。
像这样:
我想,我在这里出了问题。代码可以工作,但问题是所有标签随后都设置为0
欢迎任何提示。您正在迭代每个SetOfObject实例中的标签,而实际上您希望同时迭代两个数组,这是使用快速枚举无法完成的 而是恢复到对两个阵列的索引访问:
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;
}
请注意用于检查两个数组大小是否相同的断言
编辑:哎呀,为索引选择的变量名不好…您正在迭代每个SetOfObject实例中的标签,而实际上您希望同时迭代两个数组,这是使用快速枚举无法完成的 而是恢复到对两个阵列的索引访问:
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;
}
请注意用于检查两个数组大小是否相同的断言
编辑:哎呀,为索引选择的变量名不好…您正在为所有标签设置一个来自_myArray最后一个元素的值。是吗?是的,看起来是这样,这就是我所想的;这一行发生了什么?它从_myArray中获取一个整数对象,并将其设置为i的int,如果我在哪里用NSLog打印它,它将显示不同的数字,这取决于首先从数组中提取的内容。这本质上与我在这里进行的第一次枚举相同。对于在_myArray{NSLog@%i,[set intObject];}中设置的eToFobjects*,您正在将_myArray的最后一个元素的值设置为all labels。是吗?是的,看起来是这样,这就是我所想的;这一行发生了什么?它从_myArray中获取一个整数对象,并将其设置为i的int,如果我在哪里用NSLog打印它,它将显示不同的数字,这取决于首先从数组中提取的内容。这本质上与我在这里进行的第一次枚举相同。对于_myArray{NSLog@%i,[set intObject];}中设置的eToFobjects*感谢您的反馈,在我将其全部编码时立即生效。我一点也不知道。谢谢你的反馈,当我把它全部编码进去的时候,它立刻就工作了。我一点也不知道。