我理解如何通过将allKeys获取到NSMutableArray中来显示字典排序内容,对数组进行排序并将其用作字典的索引,但是....
如果我想通过其中一个子键对父键进行排序,该怎么办?
例如,具有父键@“8979”,@“6754”,@ 8776“,@”9076“等的字典具有子键/值对,如:
@“pos”,8 @“pos”,4 @“pos”,10 @“pos”,7
等等。
我知道如何将父键排序为:@“6754”,@“8776”,@“8979”,@“9076”
但是如何根据各自的@“pos”子键对父键进行排序,从而导致: @“6754”,@“9076”,@“8979”,@“8776”
???
答案 0 :(得分:4)
您可以将其简化为一行:
NSArray *sortedArray = [keySort keysSortedByValueUsingComparator: ^(id obj1, id obj2) {
return [(NSString *)obj1 compare:(NSString *)obj2];
}];
答案 1 :(得分:3)
keysSortedByValueUsingSelector:
将允许您提供一个比较器,该比较器从您的字典中传递值并返回一个有序的键数组。
答案 2 :(得分: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;
}];