我想根据每个对象的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?
任何帮助将不胜感激。
答案 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"]];
}];