2

我需要一些帮助,根据每个对象 ISV 键对 NSDictionary 值的 NSArray 进行排序。

这是迄今为止我用于创建数组对象的代码,因此您可以更好地了解我想要做什么。

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?

任何帮助将不胜感激。

4

3 回答 3

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

于 2013-09-02T02:27:39.353 回答
0

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

也就是说,您也无法对字典进行排序.. b/c 字典未按定义排序。

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

NSArray *keys = [theDictionary allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingSelector:@selector(compareMethod:)];
于 2013-09-02T02:30:55.710 回答
0

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

[unSortedrray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *dict1, NSDictionary *dict2) {
    return [[dict1 objectForKey:@"ISV"] localizedCompare:[dict2 objectForKey:@"ISV"]];
}];
于 2013-09-02T02:32:05.473 回答