对NsMutableArray进行排序

时间:2013-02-19 06:19:12

标签: xcode nsmutablearray

我正在使用

获取楼层名称并存储在_floorNames (NSMutableArray)
_floorNames=[conferenceHall floorDetails:office];


NSLog(@"floor names=%@",_floorNames);

这将打印这样的楼层名称。

 GROUND,
 THIRD,
 FIRST,
 SECOND

现在我想将那个楼层命名为NsMutableArray为

GROUND,
FIRST,
SECOND,
THIRD

我用过

 NSSortDescriptor *aa=[[NSSortDescriptor alloc]initWithKey:floor ascending:YES                                                           selector:@selector(localizedCaseInsensitiveCompare:)];

 NSArray *descriptors = [NSArray arrayWithObjects:aa, nil]; 
   a = [array sortedArrayUsingDescriptors:descriptors];

但它会使我的应用程序崩溃。 任何建议......

2 个答案:

答案 0 :(得分:4)

试试这个,

NSArray *arrFloorNames=[[NSArray alloc]initWithObjects:@"GROUND",@"THIRD",@"FIRST",@"SECOND", nil];
arrFloorNames = [arrFloorNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
NSLog(@"%@",arrFloorNames);

答案 1 :(得分:0)

你想要的是你永远不会得到!!!

“GROUND,THIRD,FIRST,SECOND”到“GROUND,FIRST,SECOND,THIRD”就是你想要的。

没有算法可以根据数字的内部表示对这些字符串进行排序。这就像0..1..2..3。您想要用英语对这些整数进行排序。排序可以按字母顺序排列,因此您的结果将为First,Groung,Second,Third。

如何实现?

您需要创建一个字典对象,其映射值为Third to 3,second to 2,ground to 0.然后对这些数值进行排序。然后根据值(0,1,2etc)获取Keys。