0

我正在获取楼层名称并_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];

但它会使我的应用程序崩溃。有什么建议么 ...

4

2 回答 2

4

尝试这个,

NSArray *arrFloorNames=[[NSArray alloc]initWithObjects:@"GROUND",@"THIRD",@"FIRST",@"SECOND", nil];
arrFloorNames = [arrFloorNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
NSLog(@"%@",arrFloorNames);
于 2013-02-19T07:11:17.057 回答
0

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

“地面,第三,第一,第二”到“地面,第一,第二,第三”是你想要的。

没有算法可以根据它们在数字中的内部表示对这些字符串进行排序。这类似于 0..1..2..3。你想对这些用英文写的整数进行排序。排序可以按字母顺序进行,因此您的结果将是 First、Groung、Second、Third。

如何实现?

您需要创建一个字典对象,映射值为 Third 到 3,second 到 2,ground 到 0。然后对这些数值进行排序。然后根据值(0、1、2等)获取密钥。

于 2013-02-19T07:01:48.227 回答