我做了一些搜索,并没有真正找到我的问题的答案。 下面的代码试图复制包含一些对象的NSMutable数组的内容。
我已经尝试过下面的代码,但是在运行时没有错误,但是新数组没有像我想象的那样得到对象。
csvContent是一个数组,包含解析CSV文件的对象,其他NSMutable数组round1,round2等已在头文件中定义。
NSLOG输出正确但数组不包含任何对象。
for(int loopNumber = 0; loopNumber < [csvContent count]; loopNumber++)
{
if ([[[csvContent objectAtIndex:loopNumber] objectAtIndex:1] isEqualToString:@"1"])
{
[round1 addObject:[csvContent objectAtIndex:loopNumber]];
NSLog(@"round 1");
}
if ([[[csvContent objectAtIndex:loopNumber] objectAtIndex:1] isEqualToString:@"2"])
{
[round2 addObject:[csvContent objectAtIndex:loopNumber]];
NSLog(@"round 2");
}
if ([[[csvContent objectAtIndex:loopNumber] objectAtIndex:1] isEqualToString:@"3"])
{
[round3 addObject:[csvContent objectAtIndex:loopNumber]];
NSLog(@"round 3");
}
}
答案 0 :(得分:2)
您是否实际为round1
,round2
和round3
创建并初始化了数组?换句话说,确保在运行此循环时它们不是nil
。
此外,您的代码非常低效。你在循环内调用[csvContent objectAtIndex:loopNumber]
六次。试试这个(我使用i
代替loopNumber
来保存输入):
for (int i = 0; i < csvContent.count; i++) {
NSArray *loopContent = csvContent[i];
NSString *val = loopContent[1];
if ([val isEqualToString:@"1"]) {
[round1 addObject:loopObject];
} else if ([val isEqualToString:@"2"]) {
[round2 addObject:loopObject];
} else if ([val isEqualToString:@"3"]) {
[round3 addObject:loopObject];
}
}