2012-11-07 56 views
2

在我的應用程序,我有一本字典有兩個陣列,如:排序字典和更改索引

NSDictionary *d=[[NSDictionary alloc]initWithObjectsAndKeys:listOfEvents,@"l",arr_distance,@"d", nil]; 
     NSLog(@"%@",d); 


d =  (
    "353.90", 
    "354.68", 
    "350.42", 
    "1.18" 
); 
l =  (
      { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      } 
); 
} 

我想排序與第一陣列的字典,當指數的變化,第二個數組索引也根據它改變。

這兩個數組索引是相互關聯的。

@ABC你試過代碼

NSDictionary *dict = [NSDictionary dictionaryWithObjects:listOfEvents forKeys:arr_distance]; 
     NSArray *sortedArray = [arr_distance sortedArrayUsingSelector:@selector(compare:)]; 
     NSMutableArray *sortedValues = [NSMutableArray array]; 

    for (NSString *key in sortedArray) { 
     [sortedValues addObject:[dict valueForKey:key]]; 
    } 

    NSLog(@"%@",sortedValues); 

結果:

{ 1.18,2563.91,2563.41,2563.39,350,353,354}

+0

u能請進一步解釋? – IronManGill

+1

因此,實現一種排序算法,並且每次交換a的元素時,都會對B執行相同操作。或者創建一個新的索引數組{1,2,3,4,0,5} –

+0

但是當我想要同時顯示索引數組相互關聯,如Array a是距離&數組B是來自Web的其他信息。 – user1673099

回答

1

這裏是一個辦法做到這一點,

NSArray *a = [NSArray arrayWithObjects:@"8", @"2", @"4", nil]; 
    NSArray *b = [NSArray arrayWithObjects:@"val1", @"val2", @"val3", nil];//This can be an array of any objects 

a = ["353.90", "354.68", "350.42", "1.18"]; 
b = [{ 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
      }, 
     { 
     Contestant1 = "Jon jones"; 
     Contestant2 = "Anderson silva"; 
     }]; 

像這樣做,

NSDictionary *dict = [NSDictionary dictionaryWithObjects:b forKeys:a]; 
    NSArray *sortedArray = [a sortedArrayUsingComparator:^(id firstObject, id secondObject) { 
     return [((NSString *)firstObject) compare:((NSString *)secondObject) options:NSNumericSearch]; 
    }]; 
    NSMutableArray *sortedValues = [NSMutableArray array]; 

    for (NSString *key in sortedArray) { 
     [sortedValues addObject:[dict valueForKey:key]]; 
    } 

    NSLog(@"%@",sortedValues); 
+0

問題是什麼,因爲我能夠正確分類。如果問題與排序有關,則可能必須更改排序邏輯。這是一個字符串。 – iDev

+0

您在排序時看到的問題是什麼?我的理解是,當d被排序時,l也應該按照相同的順序排序,對吧? – iDev

+0

那到底是什麼問題?因爲剛纔我試過,我按照這個順序排序,1.18, 350.42, 353.90, 354.68。你能用你得到的NSLog語句輸出來更新問題嗎? – iDev