2012-11-02 95 views
0

我已经做了一些搜索,但没有真正找到我的问题的答案。 下面的代码试图复制包含一些对象的NSMutable数组的内容。将一个对象从一个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"); 
    } 
} 

回答

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]; 
    } 
} 
+1

感谢麦迪,你是对的,我还没有创建和初始化数组:( 也感谢了代码优化:) – webbyironhead

相关问题