如果数组里面的每一个元素都是一个个model,例如
对数组排序
- NSMutableArray *array = [NSMutableArray array];
- ......
- NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES];
- [array sortUsingDescriptors:[NSArray arrayWithObject:sort]];
这是按照时间升序排列。如果需要降序,那么将YES改为NO。
使用NSSortDescriptor可以很方便的进行多条件排序,例如:同样是上面的假设,首先按照价格升序排列;当价格相同时,按照日期降序排列。
- NSMutableArray *array = [NSMutableArray array];
- ......
- NSSortDescriptor *sort1 = [NSSortDescriptor sortDescriptorWithKey:@"price" ascending:YES];
- NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
- [array sortUsingDescriptors:[NSArray arrayWithObjects:sort1, sort2, nil]];
NSSortDescriptor仅对NSSet,NSArray,NSMutableArray可以排序,需要注意的是
NSSet | - (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors; | 这是对NSSet排序,返回一个NSArray。 |
NSArray | - (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors; | 这是对NSArray排序,返回一个新的NSArray,注意内存泄漏。 |
NSMutableArray | - (void)sortUsingDescriptors:(NSArray *)sortDescriptors; | 这是NSMutableArray排序,没有返回值。 |
PS: 楼主在使用NSsortDescriptor 排序的时候错误的使用NSArray 的方法来排 NSMutableArray 的情况,结果并未对数组进行排序,希望大家注意,不同的方法对应的使用情况,