最近项目中遇到一个需求。对成员列表进行排序。规则如下
① 主持人永远在第一位,其余成员按授权>摄像头>麦克风>拼音排序。成员顺序实时变化。
想到可以用 NSSortDescriptor 很方便的实现。这里记录一下。
- (void)sortData
{
NSSortDescriptor *roleDes = [NSSortDescriptor sortDescriptorWithKey:@"role" ascending:NO comparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
NSNumber * number1 = obj1;
NSNumber * number2 = obj2;
if ([number1 integerValue] == kZegoUserRoleHost) {
return NSOrderedDescending;
}else if ([number2 integerValue] ==kZegoUserRoleHost){
return NSOrderedAscending;
}else{
return NSOrderedSame;
}
}];
NSSortDescriptor *permissionDes = [NSSortDescriptor sortDescriptorWithKey:@"permissions" ascending:NO];
NSSortDescriptor *videoDesc = [NSSortDescriptor sortDescriptorWithKey:@"isEnableVideo" ascending:NO];
NSSortDescriptor *muteDesc = [NSSortDescriptor sortDescriptorWithKey:@"isMute" ascending:YES];
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(localizedStandardCompare:)];
NSArray *descs = [NSArray arrayWithObjects:roleDes,permissionDes,videoDesc, muteDesc, sort,nil];
[self.peopleListA sortUsingDescriptors:descs];
[self.tableV reloadData];
}
最近在实现一个PDF阅读的功能。后期会分享出来。