我从服务器提取 XML Feed,该Feed包含火车站及其纬度和经度位置。
我设法创建了一个NSArray
个NSDictionary
个对象,每个对象对应一个电台。
在词典中,有一个纬度的键和经度的键。我还有一个CLLocation
对象,其中包含设备的位置。
我知道如何计算设备与每个电台之间的距离,但距离不是字典的一部分。我想按距离设备的顺序对数组进行排序。
我该怎么做?不知道从哪里开始,谷歌或我的书对我没有多大帮助!非常感谢任何帮助。
答案 0 :(得分:9)
使用以下内容;
NSArray *sortedArray;
sortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *first, NSDictionary *second) {
// Calculate distances for each dictionary from the device
// ...
return [firstDistance compare:secondDistance];
}];
答案 1 :(得分:3)
不幸的是,您无法对NSDictionary对象进行排序。你应该创建NSMutableArray并改为排序。
请参阅此内容 - Collections Programming Topics - Sorting Arrays
<强>更新强> 要对字典数组进行排序,您可以使用例如NSArray的这种方法:
sortedArray = [someArray sortedArrayUsingFunction:compareElements context:NULL];
compareElements函数示例:
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;
}