IOS NSSortDescriptor排序功能(附Demo)
2017-08-01 本文已影响140人
辛小二
前文实现IOS的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即可。
希望能帮到你
本人个人微信公众号地址(喜欢记得关注😯)
辛小二个人微信公众号地址