[英]sort a dictionary and change the index
在我的應用程序中,我有一個包含兩個數組的字典,例如:
NSDictionary *d=[[NSDictionary alloc]initWithObjectsAndKeys:listOfEvents,@"l",arr_distance,@"d", nil];
NSLog(@"%@",d);
d = (
"353.90",
"354.68",
"350.42",
"1.18"
);
l = (
{
Contestant1 = "Jon jones";
Contestant2 = "Anderson silva";
},
{
Contestant1 = "Jon jones";
Contestant2 = "Anderson silva";
},
{
Contestant1 = "Jon jones";
Contestant2 = "Anderson silva";
},
{
Contestant1 = "Jon jones";
Contestant2 = "Anderson silva";
}
);
}
我想用第一個數組對字典進行排序,當索引更改時,第二個數組索引也根據它而更改。
兩個數組的索引彼此相關。
@ABC您嘗試過的代碼
NSDictionary *dict = [NSDictionary dictionaryWithObjects:listOfEvents forKeys:arr_distance];
NSArray *sortedArray = [arr_distance sortedArrayUsingSelector:@selector(compare:)];
NSMutableArray *sortedValues = [NSMutableArray array];
for (NSString *key in sortedArray) {
[sortedValues addObject:[dict valueForKey:key]];
}
NSLog(@"%@",sortedValues);
結果:
{1.18,2563.91,2563.41,2563.39,350,353,354}
這是一種方法,
NSArray *a = [NSArray arrayWithObjects:@"8", @"2", @"4", nil];
NSArray *b = [NSArray arrayWithObjects:@"val1", @"val2", @"val3", nil];//This can be an array of any objects
要么
a = ["353.90", "354.68", "350.42", "1.18"];
b = [{
Contestant1 = "Jon jones";
Contestant2 = "Anderson silva";
},
{
Contestant1 = "Jon jones";
Contestant2 = "Anderson silva";
},
{
Contestant1 = "Jon jones";
Contestant2 = "Anderson silva";
},
{
Contestant1 = "Jon jones";
Contestant2 = "Anderson silva";
}];
像這樣做,
NSDictionary *dict = [NSDictionary dictionaryWithObjects:b forKeys:a];
NSArray *sortedArray = [a sortedArrayUsingComparator:^(id firstObject, id secondObject) {
return [((NSString *)firstObject) compare:((NSString *)secondObject) options:NSNumericSearch];
}];
NSMutableArray *sortedValues = [NSMutableArray array];
for (NSString *key in sortedArray) {
[sortedValues addObject:[dict valueForKey:key]];
}
NSLog(@"%@",sortedValues);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.