zoukankan      html  css  js  c++  java
  • objectc NSArray排序小结

    转自Rainbird的个人博客

    ios的排序不知道是用强大来形容呢,还是要用复杂来形容,反正觉得不如php一个sort函数来的简洁,每次用排序都得去网上现查怎么实现,这不查的次数多了也便有了这个小小的总结。

    1.升序排列

     NSArray *_firstArray = [NSArray arrayWithObjects:@"ccccc",@"bbbbb",@"ddddd",@"aaaaa",nil];
      NSArray *_sortedArray= [_firstArray sortedArrayUsingSelector:@selector(compare:)];
      NSLog(@"未排序:%@",_firstArray);
      NSLog(@"排行后:%@",_sortedArray);
    2012-03-19 23:17:06.748 IOSSortArray[1761:f803] 未排序:(
        ccccc,
        bbbbb,
        ddddd,
        aaaaa
    )
    2012-03-19 23:17:06.749 IOSSortArray[1761:f803] 排行后:(
        aaaaa,
        bbbbb,
        ccccc,
        ddddd
    )

    2.降序排列

      NSMutableArray *_reSortArray= [[NSMutableArray alloc] init];
      for (id _obj in [_sortedArray reverseObjectEnumerator]) {
        [_reSortArray addObject:_obj];
      }
      NSLog(@"降序排列:%@",_reSortArray);
      [_reSortArray release];
    2012-03-19 23:27:20.789 IOSSortArray[2011:f803] 排行后:(
        aaaaa,
        bbbbb,
        ccccc,
        ddddd
    )
    2012-03-19 23:27:20.790 IOSSortArray[2011:f803] 降序排列:(
        ddddd,
        ccccc,
        bbbbb,
        aaaaa
    )

    3.数组里的字典排序(NSDirector排序)

      NSMutableArray *_mutiArray = [[NSMutableArray alloc] init];
      [_mutiArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"rainbird",@"name",@"ddabc",@"work", nil]];
      [_mutiArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"ainbird",@"name",@"ccabc",@"work", nil]];
      [_mutiArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"inbird",@"name",@"fdabc",@"work", nil]];
      [_mutiArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"bird",@"name",@"agbc",@"work", nil]];
      [_mutiArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"rd",@"name",@"abac",@"work", nil]];
      
      NSSortDescriptor *_sorter  = [[NSSortDescriptor alloc] initWithKey:@"name" 
                                                               ascending:YES];
      NSSortDescriptor *_sorter2 = [[NSSortDescriptor alloc] initWithKey:@"work" 
                                                               ascending:YES];
      NSLog(@"未排序:\n%@",_mutiArray);
      NSLog(@"根据name排序:\n%@",[_mutiArray sortedArrayUsingDescriptors:[NSArray arrayWithObjects:_sorter, nil]]);
      NSLog(@"根据work排序:\n%@",[_mutiArray sortedArrayUsingDescriptors:[NSArray arrayWithObjects:_sorter2, nil]]);
      
      [_mutiArray release];
      [_sorter release];
      [_sorter2 release];
    2012-03-19 23:34:37.489 IOSSortArray[2119:f803] 未排序:
    (
            {
            name = rainbird;
            work = ddabc;
        },
            {
            name = ainbird;
            work = ccabc;
        },
            {
            name = inbird;
            work = fdabc;
        },
            {
            name = bird;
            work = agbc;
        },
            {
            name = rd;
            work = abac;
        }
    )
    2012-03-19 23:34:37.490 IOSSortArray[2119:f803] 根据name排序:
    (
            {
            name = ainbird;
            work = ccabc;
        },
            {
            name = bird;
            work = agbc;
        },
            {
            name = inbird;
            work = fdabc;
        },
            {
            name = rainbird;
            work = ddabc;
        },
            {
            name = rd;
            work = abac;
        }
    )
    2012-03-19 23:34:37.491 IOSSortArray[2119:f803] 根据work排序:
    (
            {
            name = rd;
            work = abac;
        },
            {
            name = bird;
            work = agbc;
        },
            {
            name = ainbird;
            work = ccabc;
        },
            {
            name = rainbird;
            work = ddabc;
        },
            {
            name = inbird;
            work = fdabc;
        }
    )

    ok,that’s all 源文件下载

    补充:
    sortedArrayUsingSelector:@selector(caseInsensitiveCompare:) //不区分大小排序

  • 相关阅读:
    使用树莓派打造一个音乐播放器
    关于ESP8266 NodeCMU固件无法刷入新代码的解决方法
    推荐一个好用的免费开源的笔记本软件CherryTree
    忘记数据库密码?通过Navicat找回!!
    Kettle删除日志文件
    windows下解决10点前生成时间命名的文件无效问题
    windows下备份Linux服务器上的MySQL
    Windows下安装mysql
    【EXCEL】按天计算,分摊到每年的费用金额,只用内置函数 无需编写VB
    windows 7 安装visual studio 2019 闪退问题解决
  • 原文地址:https://www.cnblogs.com/appwgh/p/2523209.html
Copyright © 2011-2022 走看看