2012-11-20 28 views
2

如何將對象數組拆分爲對象數組數組?將對象陣列拆分爲4組 - ios

說我想分成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]

不存在。

回答

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]]; 
     } 
} 
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]; 
} 
+0

類似的東西,但不是子陣列的數量設置,纔剛剛確定一組中的元素數量 – user1372829

+0

現在就試試吧,我改變它來設置組中元素的數量而不是組數 – tkanzakic

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]); 
+0

你真的試過了嗎?你在哪裏指定你想分割成幾個名字到陣列主陣列 – user1372829

+0

請檢查編輯後的答案.. – Murali