2013-03-05 101 views
-1

我有一個NSMutableArray *arr1與價值觀:如何使用另一個NSMutableArray的值對一個NSMutableArray的值進行排序?

{(B,abc) (E,pqr) (C,xyz)} 

和另一NSMutableArray *arr2

{(B) (C) (E)}

現在我想分類arr1使用arr2值,以便arr1變成{(B,abc) (C,xyz) (E,pqr)}。我怎樣才能做到這一點?

+2

[WAT?](https://www.destroyallsoftware.com/talks/wat)第一個數組是否包含數組?字典?或者是其他東西? – 2013-03-05 05:37:00

+0

arr1包含3個數組,每個數值都大於 – Shaunak 2013-03-05 05:38:29

回答

0

試試這個,

NSMutableArray *unsortedArray = [NSMutableArray arrayWithObjects:[NSArray arrayWithObjects:@"B",@"abc", nil],[NSArray arrayWithObjects:@"E",@"pqr", nil],[NSArray arrayWithObjects:@"C",@"xyz", nil],nil]; 
    NSArray *guideArray = [NSArray arrayWithObjects:@"B",@"C",@"E", nil]; 

    for(int i=0; i< [guideArray count];i++) 
    { 
     for(int j=0; j< [unsortedArray count];j++) 
     { 
      if([[unsortedArray objectAtIndex:j] containsObject:[guideArray objectAtIndex:i]]) 
      { 
       [unsortedArray exchangeObjectAtIndex:j withObjectAtIndex:i]; 
       break;     
      } 
     } 
    } 

    NSLog(@"%@",unsortedArray); 

我測試了這一點,併爲我工作。希望這可以幫助你。

+0

謝謝,它適用於我.. – Shaunak 2013-03-05 09:23:30

+0

不,這,請,爲什麼要重新發明輪子? – 2013-03-05 09:55:59

1

所以,看來你有一個數組,數組的數組:

NSArray *sorter = @[@"B", @"C", @"E"]; 
NSMutableArray *sortee = [@[ 
    @[@"B", @"abc"], 
    @[@"E", @"pqr"], 
    @[@"C", @"xyz"] 
] mutableCopy]; 

[sortee sortUsingComparator:^(id o1, id o2) { 
    NSString *s1 = [o1 objectAtIndex:0]; 
    NSString *s2 = [o2 objectAtIndex:0]; 
    NSInteger idx1 = [sorter indexOfObject:s1]; 
    NSInteger idx2 = [sorter indexOfObject:s2]; 
    return idx1 - idx2; 
}]; 
相關問題