我有一个无序的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
)
所以我的问题是,无论如何我可以直接获得排序字典而不是数组
答案 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];