A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是一只小小强 中级黑马   /  2014-7-21 14:28  /  1444 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

NSArray *array = [NSArray arrayWithObjects:@"6",@"10",@"5",@"4" ,nil];
        
        NSArray *a =[array sortedArrayUsingSelector:@selector(compare:)];
        
        
        NSLog(@"%@",a);

发现数组中有一些数字没法排序,比如10或者小于60的一些数,数字大了就又可以排序了,谁能解释下怎么回事吗,是我的原因还是?

4 个回复

倒序浏览
数字不要用nsstring去接收,用nsnumber包装成OC对象后放入nsarray就可以了。你用字符串去表示数字,排序是按字典序进行的,会出现"6" > "12"的现象
回复 使用道具 举报
我也遇到过这种问题,我觉得这个方法只能判断第一位数字的大小,如果超过两位好像无法判断。
如果你先转成c语言数组,利用C语言数组进行排序后,再转为OC数组输出也是一个不错的方法。
回复 使用道具 举报
你这排的是NSString

NSArray *array = [NSArray arrayWithObjects@6, @10, @5,  @4 , nil];
写成这样就可以了
回复 使用道具 举报
用字符串接收数字肯定没法比较,应该用NSNumber包装成数字对象 才能比较大小
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马