基于单个对象键排序NSDictionary

时间:2013-09-02 02:21:38

标签: ios objective-c nsarray nsdictionary

我想根据每个对象的ISV密钥帮助排序NSArray的NSDray值。

这是我到目前为止创建数组对象的代码,因此您可以更好地了解我要做的事情。

NSArray *combinedKeysArray = [NSArray arrayWithObjects:@"HASM", @"ISL", @"ISV", nil];

valuesCombinedMutableArray = [NSMutableArray arrayWithObjects:[dict objectForKey:@"HASM"],
                                                              [dict objectForKey:@"ISL"],
                                                              [dict objectForKey:@"ISV"], 
                                                              nil];

combinedDictionary = [NSDictionary dictionaryWithObjects:valuesCombinedMutableArray
                                                 forKeys:combinedKeysArray];

[unSortedrray addObject:combinedDictionary];

// how do I then sort unSortedArray by the string values in each object ISV key?

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

这可以解决您的问题 如何使用自定义对象对NSMutableArray进行排序? https://stackoverflow.com/a/805589/1294448

您可以使用NSSortDescriptor对NSArays

进行排序

然后在NSArray中,您有一个名为sortedArrayUsingDescriptors

的方法

或者NSComparisonResult在某些时候http://developer.apple.com/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/doc/uid/20000138-BABCEEJD

也很有帮助

答案 1 :(得分:0)

您将无法对unSortedArray进行排序,因为它只包含一个元素(即在您的最后一行代码中,您通过addObject添加单个对象)。

那就是说,你不能对字典进行排序.. b / c字典根据定义是未排序的。

您可以按特定顺序迭代字典的键,但您可以对包含字典键的数组进行排序。

NSArray *keys = [theDictionary allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingSelector:@selector(compareMethod:)];

答案 2 :(得分:0)

您可以使用-sortedArrayUsingComparator:以您需要的任何方式进行排序。

[unSortedrray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *dict1, NSDictionary *dict2) {
    return [[dict1 objectForKey:@"ISV"] localizedCompare:[dict2 objectForKey:@"ISV"]];
}];