IOS NSSortDescriptor排序功能(附Demo)

2017-08-01  本文已影响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地址

希望能帮到你

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


辛小二个人微信公众号地址
上一篇下一篇

猜你喜欢

热点阅读