Objective-C 将对象放入每个数组

Objective-C place object into each array

我是 Objective-C 和 iOS 的新手。

我有一个 NSMutableArray 180 objects.They 都排序了。

NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:180];
for (int i = 0; i < 180; i ++) {
    NSString *string = [NSString stringWithFormat:@"%d",i+1];
    [array addObject:string];
}

现在,我想将它们放入一个 NSArray 中,这个 NSArray 是一个包含五个对象的数组。(我的意思是每个数组包含 5 个对象)。我想出了两种方法。

方法一

NSMutableArray *outer = [[NSMutableArray alloc] init];
NSMutableArray *inner =  [[NSMutableArray alloc] initWithCapacity:5];
for (id object in array)
{
    int i = 0;
    [inner addObject:object];
    if (i % 5 == 0) {
        [outer addObject:inner];
    }
    i ++;
}
NSLog(@"%@",outer);

方法二

NSMutableArray *outer = [[NSMutableArray alloc] init];
NSMutableArray *inner =  [[NSMutableArray alloc] initWithCapacity:5];
for (int i = 0; i < 180; i ++)
{
    if (i % 5 == 0 && i != 0) {
        [outer addObjectsFromArray:inner];
        [inner removeAllObjects];
        [inner addObject:array[i]];
    }else{
        [inner addObject:array[i]];
    }
}
NSLog(@"%@",outer);

我该怎么做?提前致谢。

第一种方法是最简单的,你走在了正确的轨道上。

但是,有一些问题:

我每次都被设置为 0。需要在外面声明。

NSMutableArray *outer = [[NSMutableArray alloc] init];
NSMutableArray *inner = nil;
int i = 0;

for (id object in array)
{
    if (inner = nil) {
        inner = [[NSMutableArray alloc] init];
    } 
    [inner addObject:object];
    i ++;
    if (i % 5 == 0) {
        [outer addObject:inner];
        inner = nil;
        i = 0;
    }
}
- (NSArray *)Addarraydata : (NSMutableArray *) inputArray{

    NSMutableArray * arrNewArray = [NSMutableArray array];

    for(int i = 0; i < [inputArray count]; i = i + 5){
        if((i + 5) < [inputArray count]){
           [arrNewArray addObject:[inputArray subarrayWithRange:NSMakeRange(i, 5)]];
        }else{
            [arrNewArray addObject:[inputArray subarrayWithRange:NSMakeRange(i, ([inputArray count] - i))]];
        }
    }

    NSLog(@"arrNewArray = %@",arrNewArray);

    return arrNewArray;
}
NSMutableArray *outer = [[NSMutableArray alloc] init];

for (int i = 0; i < [array count] / 5; i++) {
   [outer addObject:[array subarrayWithRange:NSMakeRange(i*5, 5)]];
}

如果数组可以是 5 的非倍数并且你想得到其余的,你可以在 for 循环之后添加:

NSUInteger rest = [array count] % 5;
if (rest != 0) {
   [outer addObject:[array subarrayWithRange:NSMakeRange([array count] / 5 * 5, rest)]];
}