您正在我的应用程序中进行排序功能。其中我面临奇怪的问题,我希望得到帮助。
请检查示例数据,如下所示:(NSMutableDictionary)
{
NameArray = (
kniteman,
Acrix,
Bahel,
Mayur,
vasel,
Mayur
);
NoArray = (
3261,
1800,
3366,
4000,
1099,
1999
);
现在上面是我已经显示NSLog结果的字典数据。
我想用NameArray键对这个词典进行排序。
任何提示或指导都将受到高度赞赏。
先谢谢。
答案 0 :(得分:1)
根据定义,您无法对字典进行排序,因为字典没有顺序。你会想要一系列字典。这将始终将名称和数字值保持在一起。假设您将NameArray
和NoArray
加载到NSArrays
并且它们的顺序相同,您可以将它们加载到一个字典数组中,如下所示:
NSMutableArray *list = [NSMutableArray array];
// check for equal counts to avoid error
if ([NameArray count] == [NoArray count])
{
NSUInteger count = [NameArray count];
// loop through and add an NSDictionary for each item
for (NSUInteger i; i < count; i++)
{
[list addObject:@{@"name" : [NameArray objectAtIndex:i],
@"number": [NoArray objectAtIndex:i]}];
}
}
字典数组现在可以这样排序:
NSSortDescriptor *nameDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES] autorelease];
NSArray *sortedArray = [list sortedArrayUsingDescriptors:@[nameDescriptor]];
[list setArray:sortedArray];