zoukankan      html  css  js  c++  java
  • iOS基础知识之排序

    1.字符串比较

    1 - (NSComparisonResult)compare:(NSString *)str;

    例如:

    1 NSString *str1 = @"zhangsan";
    2 NSString *str2 = @"susan";
    3 NSComparisonResult result = [str1 compare:str2];

    2.数组的自定义排序

    1 NSArray *arr = [NSArray array];
    2 [arr sortUsingSelector:@selector(自定义的比较方法)];

    此处自定义的比较方法参照NSString中compare:方法进行设计。
    例如设计一个Student类,其中包含name和age两个属性,若设计按照年龄进行比较的方法,则代码如下:

    代码声明为:

    1 - (NSComparisonResult)compareStudent:(Student *)s;

    代码实现为:

    1 - (NSComparisonResult)compareStudent:(Student *)s {
    2     if(self.age > s.age){
    3         return NSOrderedDescending;
    4     }else if(self.age < s.age) {
    5         return NSOrderedAscending;
    6     }else{
    7         return NSOrderedSame;
    8     }
    9 }

    注意:上述方法的声明和实现全是在Student类中实现。
    调用比较方法的代码为:

    1 [arr sortUsingSelector:@selector(compareStudent:)];//arr中存放了n个student对象

    3.多属性比较的数组排序

    1 //描述器:第一个参数表示待比较的属性名称,第二个参数为YSE表示为升序,否则为降序
    2 NSSortDescriptor *ageDes = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
    3 NSSortDescriptor *nameDes = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
    4 [arr sortUsingDescriptors:@[ageDes,nameDes]];//表示先按照年龄排序,然后按照名字排序
  • 相关阅读:
    java-集合框架-泛型2-泛型限定
    进程间通信
    多进程编程基础概念
    linux deb 打包流程
    linux RPM 打包流程
    Python 第一個程序
    从注册验证码入手,我保住了30%的流失用户
    为什么Web端登录需要验证码?
    网络验证码的进化:从简单图文到无感验证
    公开课 | 金融知识图谱的应用探索
  • 原文地址:https://www.cnblogs.com/calence/p/6431527.html
Copyright © 2011-2022 走看看