2015-03-03 75 views
0

我想按照建議在Getting NSDictionary keys sorted by their respective values排序我的NSDictionary。比較器塊是否按照NSDictionary中值的升序或降序對鍵進行排序?我想按照值的升序顯示鍵。換句話說,比較器模塊完成的排序操作是升序還是降序? 謝謝。獲取按照各自的值排序的NSDictionary鍵升序

+1

注意,你**不能**排序的實際字典條目。詞典條目(由字典上的for循環返回)處於不確定的順序。 – 2015-03-03 02:35:45

回答

2

在這段代碼是按升序排列:

myArray = [myDict keysSortedByValueUsingComparator: ^(id obj1, id obj2) { 
    if ([obj1 integerValue] > [obj2 integerValue]) { 
      return (NSComparisonResult)NSOrderedDescending; 
    } 
    if ([obj1 integerValue] < [obj2 integerValue]) { 
      return (NSComparisonResult)NSOrderedAscending; 
    } 
    return (NSComparisonResult)NSOrderedSame; 
}]; 

要降序排列,開關:

return (NSComparisonResult)NSOrderedDescending; 

return (NSComparisonResult)NSOrderedAscending; 
2

生成的數組將按升序排列,其中升序由比較器的行爲決定。 (也就是說,它可能與偶然的觀察者所期望的不同)。

比較器接收兩個對象,通常稱爲obj1obj2。如果針對給定的一對對象返回NSOrderedAscending,則obj1將在結果數組中的obj2之前訂購。如果它返回NSOrderedDescending那麼obj2將在obj1之前訂購。如果它返回NSOrderedSame,則obj1obj2將在結果數組中具有任意的相對順序。

順便說一句,一個簡單的測試程序可以給你答案。