2011-06-24 47 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]; 
}];