要排序的对象是一个联系人类,如下定义:
- @interface Person : NSObject 
- @property (nonatomic, copy) NSString *name; 
- @property (nonatomic, copy) NSString *surname; 
- @property (nonatomic, strong) NSDate *dateOfBirth; 
- @end 
而数组中包含如下内容:
- Smith John 03/01/1984 
- Andersen Jane 16/03/1979 
- Clark Anne 13/09/1995 
- Smith David 19/07/1981 
- Johnson Rose 22/02/1989 
方法一
使用NSComparator进行排序
comparator实际上是用一个block对象作比较操作。它的定义如下所示:
- typedef NSComparisonResult (^NSComparator)(id obj1, id obj2); 
上面的参数(obj1、obj2)就是我们将要做比较的对象。block返回的结果为NSComparisonResult类型来表示两个对象的顺序。 要对整个数组做排序,则需要使用NSArray的sortArrayUsingComparator:方法,如下代码所示: 
- NSArray *sortedArray = [self.persons sortedArrayUsingComparator:^NSComparisonResult(Person *p1, Person *p2){ 
-     return [p1.surname compare:p2.surname]; 
- }]; 
 最终排序的结果如下所示: 
- Andersen Jane 
- Clark Anne 
- Johnson Rose 
- Smith John 
- Smith David 
 方法二  使用NSDescriptor进行排序Sort descriptor不仅可以用来对数组进行排序,还能指定element在table view中的排序,以及Core Data中对fetch request返回的数据做排序处理。通过sort descriptor可以很方便的对数组进行多个key的排序。下面来看看如何对我们的数组做surname排序,然后在进行name排序: 
- NSSortDescriptor *firstDescriptor = [[NSSortDescriptor alloc] initWithKey:@"surname" ascending:YES]; 
- NSSortDescriptor *secondDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
-  
- NSArray *sortDescriptors = [NSArray arrayWithObjects:firstDescriptor, secondDescriptor, nil]; 
-  
- NSArray *sortedArray = [self.persons sortedArrayUsingDescriptors:sortDescriptors]; 
 上面代码的排序结果如下所示: 
- Andersen Jane 
- Clark Anne 
- Johnson Rose 
- Smith David 
- Smith John 
 
对数组对象按某些属性排序方法
原文:http://www.cnblogs.com/zhujin/p/5020028.html