首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对iPhone上的doubles或CLLocationDistance值的数组进行排序

对iPhone上的doubles或CLLocationDistance值的数组进行排序
EN

Stack Overflow用户
提问于 2009-09-14 17:14:04
回答 3查看 6.5K关注 0票数 4

我正在尝试按最近距离(升序)对CLLocationDistance值列表进行排序。我首先将值转换为NSString对象,以便可以使用以下排序:

代码语言:javascript
复制
NSArray *sortedArray;
sortedArray = [distances sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

NSString无法对数值进行排序。

如何按升序设置数值列表?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-14 17:22:53

我认为您想要的是使用如下内容的sortedArrayUsingFunction:context:

代码语言:javascript
复制
NSInteger intSort(id num1, id num2, void *context)
{
    int v1 = [num1 intValue];
    int v2 = [num2 intValue];
    if (v1 < v2)
        return NSOrderedAscending;
    else if (v1 > v2)
        return NSOrderedDescending;
    else
        return NSOrderedSame;
}

// sort things
NSArray *sortedArray; sortedArray = [anArray sortedArrayUsingFunction:intSort context:NULL];

apple docs reference

票数 8
EN

Stack Overflow用户

发布于 2009-09-14 17:21:23

尝试在定义函数的地方使用sortedArrayUsingSelector来比较元素,这里有一个引用:http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html#//apple_ref/occ/instm/NSArray/sortedArrayUsingSelector

票数 1
EN

Stack Overflow用户

发布于 2009-09-14 17:24:00

当您将值转换为字符串时,排序将是字典排序,而不是数字排序,根据您的问题,这不是您想要的。根据苹果文档,CLLocationDistance被定义为double类型。鉴于此,使用用CLLocationDistance数据初始化的NSNumber实例创建NSArray (请参见numberWithDouble),并对这些实例使用NSArray的排序实现。

有关NSNumber的更多信息,请访问here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1422840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档