【问题标题】:How to order an array如何订购一个数组
【发布时间】:2010-05-12 14:40:22
【问题描述】:

我的应用中有一个数组,我需要按其中一个键排序。

该应用程序所做的基本上是在某处获取纬度和经度,计算与我的实际位置的距离并创建一个包含名为“距离”的键的数组。

我正在使用

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

有什么建议吗?

提前感谢您的任何帮助。

法布里齐奥

【问题讨论】:

  • 打电话给阵列客厅,说“嗨,我想订购一个阵列。”
  • 好吧,给我号码,我会做的。

标签: iphone iphone-sdk-3.0 nsarray nssortdescriptor


【解决方案1】:

这看起来像是一个有效的排序 - 如果您的距离值是一个字符串。要获得数字排序,您应该将其保存为 NSNumber。

【讨论】:

  • 您的意思是将其保存为数组中的 NSNumber 吗?我不太确定我是否理解了。顺便说一句。
【解决方案2】:

您应该能够使用尊重数值的自定义排序功能。

(我现在假设您的对象的“距离”键是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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2010-09-07
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多