通过加权两个参数对 NSArray 进行排序

Sort an NSArray by weighting two parameters

我有 NSArrayNSDictionary。我有两个特定的键,我想用它们来对我的数组进行排序。基本上,我目前有两个 NSSortDescriptors:

descriptor = [NSSortDescriptor sortDescriptorWithKey:@"averageNote" ascending:NO];
descriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"reviews.@count" ascending:NO];

他们只是根据元素的平均音符对我的数组进行排序,然后根据评论数量排在第二位。

我想结合这两个元素来做出更真实​​的排名:例如,70% 的平均笔记和 30% 的评论数。

我怎样才能做到这一点?

这段代码会让数组按照你想要的排名自行排序,数组将按升序排序,如果你想按降序排列,将NSOrderedAscending更改为NSOrderedDescending

NSMutableArray *array = [@[] mutableCopy];
[array sortedArrayWithOptions:NSSortStable usingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    aClass a = obj1;
    aClass b = obj2;
    float rankOfA = a.averageNote*0.7 + a.reviewCount*0.3;
    float rankOfB = b.averageNote*0.7 + b.reviewCount*0.3;
    if (rankOfA > rankOfB) {
        return NSOrderedAscending;
    }
}];