Sort array of NSDictionaries by a value inside one of the keys
本问题已经有最佳答案,请猛点这里访问。
我正在从服务器中提取XML提要,提要包含火车站及其纬度和经度位置。
我已经成功地创建了一个装满
字典中有一个表示纬度的键和一个表示经度的键。我还有一个带有设备位置的
我知道如何计算设备和每个站点之间的距离,但是距离不是字典的一部分。我想按照距离设备的距离对阵列进行排序。
我该怎么做?不知道从哪里开始,谷歌或者我的书对我没什么帮助!任何帮助都非常感谢。
使用以下内容:
1 2 3 4 5 6 | NSArray *sortedArray; sortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *first, NSDictionary *second) { // Calculate distances for each dictionary from the device // ... return [firstDistance compare:secondDistance]; }]; |
很遗憾,您无法对nsdictionary对象进行排序。您应该创建NSmutableArray并对其进行排序。
请参见-集合编程主题-排序数组
更新:要对字典数组进行排序,您可以使用例如nsarray的此方法:
1 | sortedArray = [someArray sortedArrayUsingFunction:compareElements context:NULL]; |
CompareElements函数示例:
1 2 3 4 5 6 7 8 9 10 11 | NSInteger compareElements (id num1, id num2, void *context) { int v1 = [[num1 objectForKey:@"distance"] integerValue]; int v2 = [[num2 objectForKey:@"distance"] integerValue]; if (v1 < v2) return NSOrderedAscending; else if (v1 > v2) return NSOrderedDescending; else return NSOrderedSame; } |