iOS按照权重排序

最近项目中遇到一个需求。对成员列表进行排序。规则如下
① 主持人永远在第一位,其余成员按授权>摄像头>麦克风>拼音排序。成员顺序实时变化。
想到可以用 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阅读的功能。后期会分享出来。

你可能感兴趣的:(iOS按照权重排序)