假設我有這樣的NSDictionary:iOS有沒有辦法按2個值排序NSDictionary的鍵?
NSDictionary *d = @{
@"124":@[@"-40",@"1489365614.248664"],
@"130":@[@"-40",@"1489365604.258358"],
@"134":@[@"-40",@"1489365615.49739"],
@"53":@[@"-40",@"1489365610.502131"],
@"57":@[@"-40",@"1489365609.253352"],
@"73":@[@"-40",@"1489365608.004844"],
@"89":@[@"-44",@"1489365611.750874"],
@"91":@[@"-64",@"1489365606.755874"],
@"93":@[@"-45",@"1489365605.507149"],
@"96":@[@"-45",@"1489365613.000054"]
};
我可以在陣列像這樣的第一個值對其進行排序:
NSArray *sortedKeys = [d keysSortedByValueUsingComparator: ^(NSArray *obj1, NSArray *obj2) {
return (NSComparisonResult)[obj1[0] compare:obj2[0]];
}];
,並返回該數組:
@[73,134,53,124,130,57,89,96,93,91]
這翻譯成字典是這樣的:
@{
@"73": @[@"-40",@"1489365608.004844"],
@"134":@[@"-40",@"1489365615.49739"],
@"53": @[@"-40",@"1489365610.502131"],
@"124":@[@"-40",@"1489365614.248664"],
@"130":@[@"-40",@"1489365604.258358"],
@"57": @[@"-40",@"1489365609.253352"],
@"89": @[@"-44",@"1489365611.750874"],
@"96": @[@"-45",@"1489365613.000054"],
@"93": @[@"-45",@"1489365605.507149"],
@"91": @[@"-64",@"1489365606.755874"]
};
現在,正如您可能想象的那樣,字典中數組的第二個值是一個時間戳。如果第一個值相等,我想按這個時間戳排序,所以我可以先找到最新的值。
如果我能做到這一點,我要回去了一個這樣的數組:
@[134,124,53,57,73,130,89,96,93,91]
這將翻譯詞典實際上是這樣的:
@{
@"134":@[@"-40",@"1489365615.49739"],
@"124":@[@"-40",@"1489365614.248664"],
@"53": @[@"-40",@"1489365610.502131"],
@"57": @[@"-40",@"1489365609.253352"],
@"73": @[@"-40",@"1489365608.004844"],
@"130":@[@"-40",@"1489365604.258358"],
@"89": @[@"-44",@"1489365611.750874"],
@"96": @[@"-45",@"1489365613.000054"],
@"93": @[@"-45",@"1489365605.507149"],
@"91": @[@"-64",@"1489365606.755874"]
};
希望它使感覺和某人有答案。 感謝
Dictionary不排序。 – rmaddy
@rmaddy,標題中的選詞不恰當。 OP想要一個有序的數組。 – danh
我會重新命名標題。對不起, – Jan