根据它的值

时间:2016-09-27 09:46:06

标签: ios nsmutabledictionary

我有一个无序的NSMutableDictioanry,这个dictioanry是按照以下示例创建的

{
    1 = 27;
    2 = 5;
    3 = 13964;
    4 = 2422;
    5 = 45;
    6 = 7;
    7 = 27;
    8 = 39;
}

我想根据值对此词典进行排序。这可以根据以下文章完成,并且它完全正常Getting NSDictionary keys sorted by their respective values并将返回一个数组,其中的键按照值排序

(
    2,
    6,
    7,
    1,
    8,
    5,
    4,
    3
)

所以我的问题是,无论如何我可以直接获得排序字典而不是数组

2 个答案:

答案 0 :(得分:0)

我不是并行对象的忠实粉丝,但你可能想要一个排序的键数组和一个字典。

早期,当字典被设置时(可能在-viewWillAppear:)。

self.sortedKeys = [self.dictionary keysSortedByValueUsingSelector:@selector(compare:)];

然后在-tableView:cellForRowAtIndexPath:中使用

NSNumber *key = self.sortedKeys[indexPath.row];
NSNumber *value = self.dictionary[key];

答案 1 :(得分:0)

作为非并行对象解决方案,您可以使用数组将键值对存储为两个项的数组。 keyValuePair[0]是关键,keyValuePair[1]是值。

- (NSArray *)sortedDataFromDictionary:(NSDictionary *)dictionary {
    NSMutableArray *result = [NSMutableArray arrayWithCapacity:dictionary.count];

    for (NSNumber *key in [dictionary keysSortedByValueUsingSelector:@selector(compare:)]) {
        NSArray *keyValuePair = @[key, dictionary[key]];
        [result addObject:keyValuePair];
    }

    return [result copy];
}

早期,当字典被设置时(可能在-viewWillAppear:)。

self.sortedData = [self sortedDataFromDictionary:dictionary];

然后在-tableView:cellForRowAtIndexPath:中使用

NSNumber *key = self.sortedData[indexPath.row][0];
NSNumber *value = self.sortedData[indexPath.row][1];