2

オブジェクトの配列をオブジェクトの配列の配列に分割するにはどうすればよいですか?

4人のグループに分けたいと言うのですが、どうすればいいですか?

[a,b,c,d,e,f,g,h] => [a,b] [c,d] [e,f] [g,h]

または、3 つのグループに分割することを指定した場合、結果は [a,b,c]、[d,e,f]、[g,h] になります。

h が存在しない場合にも機能するはずです。

4

3 に答える 3

2

このロジックを試してみてください.....

NSArray *arr = [[NSArray alloc]initWithObjects:@"One",@"Two",@"Three",@"Four",@"Five",@"Six",@"Seven",nil];
NSMutableArray *arrNew = [[NSMutableArray alloc]init];
int numberofSubArrs = 3; // change this to check the logic
for (int i=0; i<numberofSubArrs; i++) {
    NSMutableArray *arrrr = [[NSMutableArray alloc]init];
    [arrNew addObject:arrrr];
}
int m = 0;
for (int k=0; k<[arr count]; k++) {
    [[arrNew objectAtIndex:m]addObject:[arr objectAtIndex:k]];
    m++;
    if (m == numberofSubArrs) {
        m=0;
    }
}
int g=0;
int p=0;
while(p<[arr count]) {
    for (int z=0; z<[[arrNew objectAtIndex:g] count]; z++) {
        [[arrNew objectAtIndex:g] replaceObjectAtIndex:z withObject:[arr objectAtIndex:p++]];
    }
    g++;
}
NSLog(@"Required Array is:%@",[arrNew description]);
于 2012-11-20T12:40:49.513 に答える
1

これを出発点として試してください:

NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", @"d", @"e", @"f", @"g", @"h", nil];
NSMutableArray *manyArrays = [NSMutableArray array];
int numberOfElementsInSubArrays = 2;
int numberOfSubArrays = ceil((float)[array count] / (float)numberOfElementsInSubArrays);
for (int i = 0; i < numberOfSubArrays; i++) {
    NSMutableArray *subArray = [NSMutableArray array];
    for (int j = 0; j < numberOfElementsInSubArrays; j++) {
        if (i*numberOfElementsInSubArrays+j < [array count]) {
            NSLog(@"Array: %d Value:%@", i, [array objectAtIndex:i*numberOfElementsInSubArrays+j]);
            [subArray addObject:[array objectAtIndex:i*numberOfElementsInSubArrays+j]];
        }
    }
    [manyArrays addObject:subArray];
}
于 2012-11-20T12:38:47.870 に答える
0

これを試してみてください。

NSMutableArray *splitted = [NSMutableArray array];    
id firstItem, secondItem;
for (NSInteger i=0; i <= [originalArray count]-1; i+=2) {
        @try {
            firstItem = [originalArray objectAtIndex:i];
            secondItem = [originalArray objectAtIndex:i+1];
        }
        @catch (NSException *exception) {
            secondItem = [NSNull null];
        }
        @finally {
            [splitted addObject:@[firstItem,secondItem]];
        }
 }
于 2012-11-20T12:31:46.840 に答える