将对象从一个NSMutablearray复制到另一个NSMutablearray

时间:2012-11-02 03:52:50

标签: objective-c nsmutablearray

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

1 个答案:

答案 0 :(得分:2)

您是否实际为round1round2round3创建并初始化了数组?换句话说,确保在运行此循环时它们不是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];
    }
}