zoukankan      html  css  js  c++  java
  • NSSortDescriptor 数组排序

    如果数组里面的每一个元素都是一个个model,例如

     

     

    对数组排序

    [plain] view plaincopy
     
    1. NSMutableArray *array = [NSMutableArray array];  
    2. ......  
    3. NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES];
    4. [array sortUsingDescriptors:[NSArray arrayWithObject:sort]];  

    这是按照时间升序排列。如果需要降序,那么将YES改为NO。

     使用NSSortDescriptor可以很方便的进行多条件排序,例如:同样是上面的假设,首先按照价格升序排列;当价格相同时,按照日期降序排列。

    [plain] view plaincopy
     
    1. NSMutableArray *array = [NSMutableArray array];  
    2. ......  
    3. NSSortDescriptor *sort1 = [NSSortDescriptor sortDescriptorWithKey:@"price" ascending:YES];  
    4. NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];  
    5. [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 的情况,结果并未对数组进行排序,希望大家注意,不同的方法对应的使用情况,

     
     
     
  • 相关阅读:
    cesium学习——cesium中的坐标
    webService框架CXF的简单使用
    使用cesium中的scene.open中遇到的几个问题
    通过Spring读取properties配置文件
    常用的Ant风格书写
    oracle小知识点
    虚拟机centos7系统下安装hadoop ha和yarn ha(详细)
    java 注解
    Guava Immutable 不可变集合
    Guava BiMap
  • 原文地址:https://www.cnblogs.com/wuwangchuxin/p/3759141.html
Copyright © 2011-2022 走看看