尝试循环嵌套数组,obj-c

时间:2011-08-26 07:04:37

标签: objective-c

我有一个包含5个子数组的数组,我正试图循环, 我可以访问第一个子数组及其对象,但是当我增加变量计数并尝试访问第二个子数组时,我的程序会以更好的方式崩溃任何想法吗?这是我的一般方法:

-(void) accessArray {
    NSArray *myArray; // my array that holds sub arrays  
    int count = 0; //used to hold which sub array im accesing  
    NSArray *subArray = [myArray objectAtIndex:count];
    //do something with object   =  [subArray objectAtIndex:0];
    //do something with object    = [subArray objectAtIndex:1];
}

-(void) otherMethod {
    count ++

    [self accessArray]; 

}

3 个答案:

答案 0 :(得分:2)

for (NSArray *inner in outerArray)
    for (id object in inner) {
        ... do stuff ...
    }
}

答案 1 :(得分:0)

除了bbums答案,您还可以使用NSRange制作子数组(例如来自NSArray Class Reference):

NSArray *halfArray;

NSRange theRange;



theRange.location = 0;

theRange.length = [wholeArray count] / 2;



halfArray = [wholeArray subarrayWithRange:theRange];

只说这个,因为看起来这可能是你想要做的。这不会遍历对象,但在尝试从其他人创建新数组时非常方便。

答案 2 :(得分:0)

如果你真的想用自己的方式去做(即通过'otherMethod'访问子数组),你需要让两个方法都可以访问'count'变量:

int count = 0; // used to hold which sub array I'm accessing

-(void) accessArray {
    NSArray *myArray; // my array that holds sub arrays
    NSArray *subArray = [myArray objectAtIndex:count];
    // do something with object = [subArray objectAtIndex:0];
    // do something with object = [subArray objectAtIndex:1];
}

-(void) otherMethod {
   count++;             // Cannot access count if defined inside 'accessArray'
   [self accessArray]; 
}

现在您可以使用'otherMethod'来访问子数组。但我认为最好的方法是在bbum上面的第一个答案中给出。