棘手的NSArray迭代

时间:2014-06-03 16:36:14

标签: ios nsarray iteration

我有一个包含28个项目的NSArray(mainArray),我希望将该数组分成7个数组,每个数组包含4个项目。我是否有可能从mainArray中获取前4个项目,将它们添加到subArray,然后获取 NEXT 4项并将它们添加到subArray中,依此类推直到我遍历所有28项?如果有可能,怎么样?

这是我的mainArray:

{item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18, item19, item20, item21, item22, item23, item24, item25, item26, item27, item28}

我需要将其更改为this(groupedArray):

{item1, item2, item3, item4}, {item5, item6, item7, item8}, {item9, item10, item11, item12}, {item13, item14, item15, item16}, {item17, item18, item19, item20}, {item21, item22, item23, item24}, {item25, item26, item27, item28}

这是我尝试过的:

int i; int j;
for (i=0, j=1; i<28; i++, j*=4 ) {
    NSArray *smallArray = [mainArray subarrayWithRange:NSMakeRange(0, j)];
    [groupedArray addObjectsFromArray:smallArray];
}

谢谢,

DB

1 个答案:

答案 0 :(得分:1)

您的某些索引已关闭。你想要这样的东西:

NSArray *mainArray = ... // the full array
NSMutableArray *groupedArray = ... // the new array

for (NSUInteger i = 0; i < mainArray.count; i += 4) {
    NSArray *smallArray = [mainArray subarrayWithRange:NSMakeRange(i, 4)];
    [groupedArray addObjectsFromArray:smallArray];
}

请注意,如果mainArray中的元素数不是4的倍数,则此代码会崩溃。