Sorting NSMutableArray using SortDescriptor AND Predicate possible?

偶尔善良 提交于 2019-12-30 03:27:08

问题


I have an array of type "Restaurant" which has an NSSet of "Rating." Rating has an ID and a value.

I want to sort the array of Restaurant's by rating with an ID of 01, from high to low.

Something like the following, but how do I use the predicate and sort descriptor together on 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]];

回答1:


You can sort the array using a 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;
}];


来源:https://stackoverflow.com/questions/8608247/sorting-nsmutablearray-using-sortdescriptor-and-predicate-possible

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!