2011-06-24 50 views
2

我知道如何顯示字典通過獲得allKeys到一個NSMutableArray,排數組,並用它作爲索引到字典的手段來分類的內容,但排序字典....通過子鍵

如果什麼我想通過其中一個子鍵對父鍵進行排序?

例如,與父鍵的字典@ 「8979」,@ 「6754」,@ 8776" ,@ 「9076」 等具有類似的子鍵/值對:

@ 「POS」, 8 @ 「POS」,4 @ 「POS」,10 @ 「POS」,7

我知道如何父鍵排序爲:@ 「6754」, @「8776」,@「8979」,@「9076」

但是如何基於th對父鍵進行排序eir各自@「pos」子鑰匙導致: @「6754」,@「9076」,@「8979」,@「8776」

???

回答

3

keysSortedByValueUsingSelector:將讓你提供一個比較器,它傳遞你的字典中的值並返回一個有序的密鑰數組。

+0

閱讀了關於如何做到這一點,謝謝你的指針;-) – user7865437

3

這似乎這樣的伎倆,我....

NSArray *sortedArray = [keySort keysSortedByValueUsingComparator: ^(id obj1, id obj2) { 

    NSString *p1 = [obj1 objectForKey:@"pos"]; 
    NSString *p2 = [obj2 objectForKey:@"pos"]; 

    if (p1 > p2) { 
     return (NSComparisonResult)NSOrderedDescending; 

    } 

    if (p1 < p2) { 
     return (NSComparisonResult)NSOrderedAscending; 
    } 
    return (NSComparisonResult)NSOrderedSame; 
}]; 
4

您可以簡化這一條線:

NSArray *sortedArray = [keySort keysSortedByValueUsingComparator: ^(id obj1, id obj2) { 
    return [(NSString *)obj1 compare:(NSString *)obj2]; 
}];