gpt4 book ai didi

objective-c - 可以使用 SortDescriptor AND Predicate 对 NSMutableArray 进行排序吗?

转载 作者:太空狗 更新时间:2023-10-30 03:52:11 24 4
gpt4 key购买 nike

我有一个类型为“Restaurant”的数组,它的 NSSet 为“Rating”。评分有一个 ID 和一个值。

我想按 ID 为 01 的评分从高到低对餐厅的数组进行排序。

类似下面的内容,但如何在 originalArray 上同时使用谓词和排序描述符?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Rating.rating_id=%d", ratingID];
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"currentValue" ascending:YES];
NSArray *sorted = [[originalArray allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];

最佳答案

您可以使用 NSComparator block 对数组进行排序。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"rating_id = %d", ratingID];

NSArray *sorted = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

int value1 = [[[[obj1 ratings] filteredSetUsingPredicate:predicate] anyObject] currentValue];
int value2 = [[[[obj2 ratings] filteredSetUsingPredicate:predicate] anyObject] currentValue];

if ( value1 < value2 )
return NSOrderedAscending;
if ( value1 > value2 )
return NSOrderedDescending;
return NSOrderedSame;
}];

关于objective-c - 可以使用 SortDescriptor AND Predicate 对 NSMutableArray 进行排序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8608247/

24 4 0