码迷,mamicode.com
首页 > 编程语言 > 详细

Objective-C 排序

时间:2015-12-23 12:50:32      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

在Objective-C中,排序分为:

1、Foundation框架中的对象排序

2、自定义对象排序

 例子:每个学生都有一个成绩score属性,根据成绩score对学生排序

 自定义对象 Student.h

技术分享

Student.m

技术分享

 

main.m

#import <Foundation/Foundation.h>
#import "Student.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
         //1、Foundation框架中的对象排序
         NSArray *arr = @[@12, @25, @15, @7, @18];
         NSLog(@"排序前: %@", arr);
         // 注意: 想使用compare方法对数组中的元素进行排序, 那么数组中的元素必须是Foundation框架中的对象, 也就是说不能是自定义对象
         NSArray *newArr = [arr sortedArrayUsingSelector:@selector(compare:)];
         NSLog(@"排序后: %@", newArr);
        
        //2、自定义对象排序
        
        Student *stu1 = [Student new];
        stu1.score = 91;
        
        Student *stu2 = [Student new];
        stu2.score = 97;
        
        Student *stu3 = [Student new];
        stu3.score = 95;
        
        Student *stu4 = [Student new];
        stu4.score = 87;
        
        
        NSArray *studentArr = @[stu1, stu2, stu3, stu4];
        NSLog(@"排序前: %@", studentArr);
        
        // 按照学生的成绩进行排序
        // 不能使用compare:方法对自定义对象进行排序
        // NSArray *newArr = [arr sortedArrayUsingSelector:@selector(compare:)];
        
        
        // 该方法默认会按照升序排序
        NSArray *newStudentArr = [studentArr sortedArrayWithOptions:NSSortStable usingComparator:^NSComparisonResult(Student *obj1, Student *obj2) {
            //升序
            return obj1.score > obj2.score;
            //降序
//            return obj1.score < obj2.score;
        }];
        NSLog(@"成绩排序后: %@", newStudentArr);
        return 0;
    }
    return 0;
}

 结果:

技术分享

Objective-C 排序

标签:

原文地址:http://www.cnblogs.com/jukaiit/p/5069314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!