最近項目中遇到一個需求。對成員列表進行排序。規則如下
① 主持人永遠在第一位,其余成員按授權>攝像頭>麥克風>拼音排序。成員順序實時變化。
想到可以用 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閱讀的功能。后期會分享出來。