// 数组排序1(selector自然排序)
NSArray *array = @[@"2", @"5", @"4", @"8"];
// 返回一个排好序的数组,原数组不会改变
// 制定元素的比较方法
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@\n%@", array, sortedArray);
// 数组排序2(selector优先级排序)
Student *stu1 = [Student studentWithFirstName:@"B" andWithLastName:@"D"];
Student *stu2 = [Student studentWithFirstName:@"C" andWithLastName:@"F"];
Student *stu3 = [Student studentWithFirstName:@"A" andWithLastName:@"C"];
Student *stu4 = [Student studentWithFirstName:@"B" andWithLastName:@"A"];
Student *stu5 = [Student studentWithFirstName:@"C" andWithLastName:@"B"];
NSArray *array = [NSArray arrayWithObjects:stu1, stu2, stu3, stu4, stu5, nil];
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compareStudent:)];
NSLog(@"%@", sortedArray);
// 数组排序3(Block优先级排序)推荐
Student *stu1 = [Student studentWithFirstName:@"B" andWithLastName:@"D"];
Student *stu2 = [Student studentWithFirstName:@"C" andWithLastName:@"F"];
Student *stu3 = [Student studentWithFirstName:@"A" andWithLastName:@"C"];
Student *stu4 = [Student studentWithFirstName:@"B" andWithLastName:@"A"];
Student *stu5 = [Student studentWithFirstName:@"C" andWithLastName:@"B"];
NSArray *array = [NSArray arrayWithObjects:stu1, stu2, stu3, stu4, stu5, nil];
NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(Student *obj1, Student *obj2) {
NSComparisonResult result = [obj1.firstName compare:obj2.firstName];
if (result == NSOrderedSame) {
result = [obj1.lastName compare:obj2.lastName];
}
return result;
}];
NSLog(@"%@", sortedArray);
// 数组排序4(使用排序描述器NSSortDescriptor)
Student *stu1 = [Student studentWithFirstName:@"B" andWithLastName:@"D" andWithBookName:@"CBook"];
Student *stu2 = [Student studentWithFirstName:@"C" andWithLastName:@"F" andWithBookName:@"BBook"];
Student *stu3 = [Student studentWithFirstName:@"A" andWithLastName:@"C" andWithBookName:@"CBook"];
Student *stu4 = [Student studentWithFirstName:@"B" andWithLastName:@"A" andWithBookName:@"CBook"];
Student *stu5 = [Student studentWithFirstName:@"C" andWithLastName:@"B" andWithBookName:@"ABook"];
NSArray *array = [NSArray arrayWithObjects:stu1, stu2, stu3, stu4, stu5, nil];
NSSortDescriptor *sortWithBookName = [NSSortDescriptor sortDescriptorWithKey:@"book.name" ascending:YES];
NSSortDescriptor *sortWithFirstName = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];
NSSortDescriptor *sortWithLastName = [NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES];
NSArray *descs = [NSArray arrayWithObjects:sortWithBookName, sortWithFirstName, sortWithLastName, nil];
NSArray *sortedArray = [array sortedArrayUsingDescriptors:descs];
NSLog(@"%@",sortedArray);