2013-02-19 93 views
0

我正在地板的名称和使用排序NsMutable阵列

_floorNames=[conferenceHall floorDetails:office]; 


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

这将打印这样的地板名称中_floorNames (NSMutableArray)存储。

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]; 

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

+0

建议:1:不使用Xcode的标签,这是不恰当的。 #2:格式化您的代码,无法阅读。 #3:问一个真正的问题 - 我无法推断你期望发生什么以及实际发生了什么。 – 2013-02-19 06:21:52

+0

我的floorNames mutableArray包含地板名称,如GROUND, THIRD,FIRST,SECOND。如何对这个mutableArray进行排序以获得GROUND,FIRST,SECOND,THIRD。 – user2043033 2013-02-19 06:27:52

回答

0

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

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

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

如何实现?

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

4

试试这个,

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

arrFloorNames = [arrFloorNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare :)]; NSLog(@“%@”,arrFloorNames);通过使用这个我越来越不好在我的应用程序访问。 – user2043033 2013-02-19 07:30:57

+0

示例硬编码检查此代码 - (void)viewDidLoad方法 – Ravindhiran 2013-02-19 07:42:45

+0

@ user2043033:此代码如何根据您的要求进行排序。请让我知道。 – 2013-02-22 16:18:30