我的应用程序中有一个数组,我需要通过其中一个键来订购。
应用程序的基本操作是将纬度和经度放在某处,计算距离我实际位置的距离,并创建一个包含一个名为“距离”的键的数组。
我正在使用
myArray sortUsingDescriptors:
[NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"distance" ascending:YES] autorelease]]];
我不确定它是否正常工作,我的意思是第一批结果是有序的,但后来显示的距离更接近前一个,例如:
0.8 km
1.6 km
1.9 km
10053.9 km
1098.0 km
2372.0 km
470.5 km
有什么建议吗?
我提前感谢您提供任何帮助。
的Fabrizio
答案 0 :(得分:4)
如果你的距离值是一个字符串,那看起来就像一个有效的排序。要获得数字排序,您应将其保存为NSNumber。
答案 1 :(得分:0)
您应该能够使用尊重数值的自定义排序功能。
(我现在假设对象的“距离”键是NSString
static NSInteger numericCompare(id first, id second, void* context)
{
return [(NSString*)[first distance] compare:[second distance] options:NSCaseInsensitiveSearch | NSNumericSearch];
}
现在,您可以使用NSArray
NSArray* sortedArray = [myArray sortedArrayUsingFunction:numericCompare context:NULL];