0

我做了一些搜索,并没有真正找到我的问题的答案。下面的代码试图复制包含一些对象的 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");
    }
}
4

1 回答 1

2

您是否真的创建并初始化了round1round2和的数组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];
    }
}
于 2012-11-02T04:00:26.417 回答