关于在objective-c中迭代2个数组的简单问题

关于在objective-c中迭代2个数组的简单问题,objective-c,Objective C,我在objective-c中迭代一个NSArray: for (id object in array1) { ... } 我现在有另一个array2,我需要使用当前array1的相同索引进行访问 我应该使用另一个for语句吗 谢谢如果您需要共享索引,可以使用c样式的for循环: for( int i = 0; i < [array1 count]; ++i ) { id object2 = [array2 objectAtIndex:i]; //Do somethin

我在objective-c中迭代一个NSArray:

for (id object in array1) {
  ...
}
我现在有另一个array2,我需要使用当前array1的相同索引进行访问

我应该使用另一个for语句吗


谢谢

如果您需要共享索引,可以使用c样式的for循环:

for( int i = 0; i < [array1 count]; ++i )
{
    id object2 = [array2 objectAtIndex:i];
    //Do something with object2
}
for(int i=0;i<[array1 count];+i)
{
id object2=[array2 objectAtIndex:i];
//用object2做点什么
}

您有几个选项:

  • 按照Dan的建议,对循环使用c样式

  • 在快速枚举方法中,在单独的变量中跟踪当前索引:

    int index = 0;
    for (id object in array1) {
       id object2 = [array2 objectAtIndex:index];
       ...
       ++index;
    }
    
  • 使用
    枚举对象susingblock:
    方法(OS 4.0+):


  • 你混合了NSArray和C-array语法;否则,我会+1。你是对的,忘了,我最近一直在windows和mac编程之间切换,我模糊了两者。对不起,现在你正在尝试分配一个r值。好的,我想我当时是对的,因为我在编写代码之前没有引用代码。不,你不应该使用另一个for语句。共享索引表明(取决于两个数组的作用域)更好的设计可能是使用一个组合数组,帮助在两个数组中实现对象的对应。@Patrick:这是一个很好的解决方案,我自己也没有想到。
    [array1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
        id obj2 = [array2 objectAtIndex:idx];
        ...
    }];