2013-02-19 174 views
1

我想按照objective-c中的字母顺序对数组进行排序。我已经用这种方式实现了。在objective-c中按字母顺序对数组进行排序

//Sorting of the Array 
NSArray *sortedArray = [arrName sortedArrayUsingComparator:^(Cars *firstObject, Cars *secondObject) { 
    return [firstObject.str_name compare:secondObject.str_name]; 
}]; 
arrName =[NSMutableArray arrayWithArray:sortedArray]; 

的问题是所有的数字出现,然后captial字母的单词,然后小写字母项目...

我希望它出现alphabetically->意思是说,大写字母和小写字母可能混合。

回答

14

compare:替换为caseInsensitiveCompare:

由于arrName是可变的,请改用'sortUsingComparator'方法。它将排序可变数组而不创建新数组。

[arrName sortUsingComparator:^(Cars *firstObject, Cars *secondObject) { 
    return [firstObject.str_name caseInsensitiveCompare:secondObject.str_name]; 
}]; 
+0

真棒..谢谢...... – lakesh 2013-02-19 03:48:06

+0

然后我是正确的说法是sortedArray有可能成为类NSMutableArray里的? – lakesh 2013-02-19 03:58:00

+0

不,你不需要'sortedArray'。 – rmaddy 2013-02-19 03:58:52

-1

试试这个,

NSArray *array=[[NSArray alloc]initWithObjects:@"Object1",@"object1", nil];  
array =[array sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
NSLog(@"%@",array); 
+0

这不起作用。它不是一个字符串数组,它是一个对象数组,它是对象属性的排序。 – rmaddy 2013-02-19 03:52:15