gpt4 book ai didi

ios - iOS是否可以通过2个值对NSDictionary的键进行排序?

转载 作者:行者123 更新时间:2023-12-01 18:41:11 26 4
gpt4 key购买 nike

假设我有这个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"]
};

希望有道理,有人可以回答。
谢谢

最佳答案

如果有平局,只需比较第二个值...

NSArray *sortedKeys = [d keysSortedByValueUsingComparator: ^(NSArray *obj1, NSArray *obj2) {
NSComparisonResult result = [obj1[0] compare:obj2[0]];
return (result == NSOrderedSame)? [obj2[1] compare:obj1[1]] : result;
}];

关于ios - iOS是否可以通过2个值对NSDictionary的键进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42755173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com