obj-c真的是一个神奇的语言。当一个数组中包含字典,并且要将该数组按照字典中某一个key进行排序时,可以用如下方法。
//字典存在数组中的排序
02.
03.
NSMutableArray *myMutableArr = [[[NSMutableArray alloc] init] autorelease];
04.
05.
NSDictionary *dicOne = [NSDictionary dictionaryWithObjectsAndKeys:@
"7"
,@
"price"
,@
"12"
,@
"number"
,
nil
];
06.
07.
NSDictionary *dicTWo = [NSDictionary dictionaryWithObjectsAndKeys:@
"6"
,@
"price"
,@
"5"
,@
"number"
,
nil
];
08.
09.
NSDictionary *dicThree = [NSDictionary dictionaryWithObjectsAndKeys:@
"3"
,@
"price"
,@
"1"
,@
"number"
,
nil
];
10.
11.
NSDictionary *dicFour = [NSDictionary dictionaryWithObjectsAndKeys:@
"4"
,@
"price"
,@
"23"
,@
"number"
,
nil
];
12.
13.
[myMutableArr addObject:dicOne];
14.
15.
[myMutableArr addObject:dicTWo];
16.
17.
[myMutableArr addObject:dicThree];
18.
19.
[myMutableArr addObject:dicFour];
20.
21.
22.
23.
NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@
"number"
ascending:
YES
]];
24.
25.
[myMutableArr sortUsingDescriptors:sortDescriptors];
但这时的结果可能是按照5,23,12,1排序的。
如果要按该key值的数值大小排序时,只需改成下面的方法:
NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@
"number"
ascending:
YES selector:@selector(localizedStandardCompare:)]
];
这样结果就没有问题啦