按键名排序NSMutableDictionary

时间:2013-12-14 14:25:06

标签: iphone objective-c ipad sorting ios7

您正在我的应用程序中进行排序功能。其中我面临奇怪的问题,我希望得到帮助。

请检查示例数据,如下所示:(NSMutableDictionary)

{
NameArray =     (
        kniteman,
        Acrix,
        Bahel,
        Mayur,
        vasel,
        Mayur
    );
    NoArray =     (
        3261,
        1800,
        3366,
        4000,
        1099,
        1999
    );

现在上面是我已经显示NSLog结果的字典数据。

我想用NameArray键对这个词典进行排序。

任何提示或指导都将受到高度赞赏。

先谢谢。

1 个答案:

答案 0 :(得分:1)

根据定义,您无法对字典进行排序,因为字典没有顺序。你会想要一系列字典。这将始终将名称和数字值保持在一起。假设您将NameArrayNoArray加载到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];