美文网首页
IOS NSSortDescriptor排序功能(附Demo)

IOS NSSortDescriptor排序功能(附Demo)

作者: 辛小二 | 来源:发表于2017-08-01 15:17 被阅读140次
    前文实现IOS的NSPredicate(查询功能)

    传送门NSPredicate查询功能

    本文主要实现生序降序对数组进行排序

    NSSortDescriptor (ascendingYES为升序NO为降序)
    1)简单首字母排序,NSSortDescriptor会按照首字母排序之后再按照第二个字母依次往下排序

    NSArray * array = @[@"abc",@"bcd",@"acd",@"acd",@"acd",@"ctk",@"tck",@"ack"];
    /* ascendingYES为升序NO为降序*/
        NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES];
        NSArray *arr1 = [array sortedArrayUsingDescriptors:@[sort]];
        NSLog(@"%@",arr1);
    

    注:sortDescriptorWithKey当中的key值主要是对对象使用的,像上面这个例子中sortDescriptorWithKey的key填写nil或者self都是可以的,不会影响结果。

    2)利用取key的方式对对象进行排序,场景例子:数组包多个字典、我们按照先排序年龄在排序收入的方式进行筛选,按照降序排列。

    - (IBAction)paixu:(UIButton *)sender {
        NSSortDescriptor *ageSD = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
        NSSortDescriptor *scoreSD =[NSSortDescriptor sortDescriptorWithKey:@"score" ascending:NO];
        self.datas = [[self.datas sortedArrayUsingDescriptors:@[ageSD,scoreSD]] mutableCopy];
        [self.mainTableView reloadData];
    }
    

    注:可以对排序加多个限定,但是你需要创建多个NSSortDescriptor来实现它,创建一个NSSortDescriptor是不够的,筛选的优先级会按照你给定的顺序进行筛选,进行筛选过后reload即可。

    传送门Demo地址

    希望能帮到你

    本人个人微信公众号地址(喜欢记得关注😯)


    辛小二个人微信公众号地址

    相关文章

      网友评论

          本文标题:IOS NSSortDescriptor排序功能(附Demo)

          本文链接:https://www.haomeiwen.com/subject/udujlxtx.html