我有NSMutableDictionary
有两把钥匙。一个用于标题(例如“测试”),一个用于距离(例如“200英里”)。
如何按最近或最远距离订购这些值。我需要标题和距离值索引在订购时更改。
所以这将是NSMutableDictionary
的常规版本:
Titles: (
"Test1"
"Test2"
"Test3"
)
Distances: (
"240"
"43"
"482"
)
订购版本(最近距离):
Titles: (
"Test2"
"Test1"
"Test3"
)
Distances: (
"43"
"240"
"482"
)
答案 0 :(得分:3)
我不禁觉得你想要的是NSArray的NSArray,或NSArray的自定义对象。这种设计感觉非常尴尬,并创造了额外的工作 - 因为如果以这种方式构建数据,唯一真正的答案是“围绕整个事情创建一个非常谨慎地管理这个不变量的自定义API,然后只通过该接口改变这个数据结构。“
答案 1 :(得分:1)
正如@Chuck所说,如果对这两个数组进行排序或对它们进行排序,那么对数组就是一个明显的结构,这是一个关键的操作。但是,如果这是一项罕见的操作并且有充分的理由将其保留为2阵列字典,那么您可以按如下方式实现目标:
Distances
数组中的值并对其进行比较来排序两个值。但是一系列对将更容易......
答案 2 :(得分:0)
我会这样做:
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"TEST1", @"TITLE", [NSNumber numberWithInt:240], @"DISTANCE", nil];
NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"TEST2", @"TITLE", [NSNumber numberWithInt:43], @"DISTANCE", nil];
NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"TEST3", @"TITLE", [NSNumber numberWithInt:482], @"DISTANCE", nil];
NSSortDescriptor *distanceSort = [NSSortDescriptor sortDescriptorWithKey:@"DISTANCE" ascending:YES]; //Set 'NO' to order from biggest to lowest
NSArray *sortedArrayOfDic = [[NSArray arrayWithObjects:dic1, dic2, dic3, nil] sortedArrayUsingDescriptors:[NSArray arrayWithObjects:distanceSort, nil]];
NSLog(@"%@", sortedArrayOfDict);
输出将是按距离排序的字典数组,如:
"43", "TEST2"
"240", "TEST1"
"482", "TEST3"