黑马程序员技术交流社区

标题: NSArray排序问题 [打印本页]

作者: 我是一只小小强    时间: 2014-7-21 14:28
标题: NSArray排序问题
NSArray *array = [NSArray arrayWithObjects:@"6",@"10",@"5",@"4" ,nil];
        
        NSArray *a =[array sortedArrayUsingSelector:@selector(compare:)];
        
        
        NSLog(@"%@",a);

发现数组中有一些数字没法排序,比如10或者小于60的一些数,数字大了就又可以排序了,谁能解释下怎么回事吗,是我的原因还是?
作者: fantacyleo    时间: 2014-7-21 14:32
数字不要用nsstring去接收,用nsnumber包装成OC对象后放入nsarray就可以了。你用字符串去表示数字,排序是按字典序进行的,会出现"6" > "12"的现象
作者: 为梦想挺身而出    时间: 2014-7-21 16:42
我也遇到过这种问题,我觉得这个方法只能判断第一位数字的大小,如果超过两位好像无法判断。
如果你先转成c语言数组,利用C语言数组进行排序后,再转为OC数组输出也是一个不错的方法。
作者: 徐开伟    时间: 2014-7-21 16:45
你这排的是NSString

NSArray *array = [NSArray arrayWithObjects@6, @10, @5,  @4 , nil];
写成这样就可以了
作者: 小海    时间: 2014-7-21 17:34
用字符串接收数字肯定没法比较,应该用NSNumber包装成数字对象 才能比较大小




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2