How to sort an NSArray based on a list of values ? For example:
An object of the NSArray has a property :
NSString* language; //- may contain value @"FR", @"NL", @"SP", @"EN", and others languages
How can we sort based on the list of values like:
NSArray* sortingByList = @[@"FR", @"NL", @"SP", @"EN"];
The expected results should look like this:
- FR - FR - NL - NL - NL - SP - SP - EN - EN - EN - other languages ...
- (NSArray*) sortArray:(NSArray *)language withOrder:(NSArray *)sortingByList
{
return [language sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
NSUInteger pos1 = [sortingByList indexOfObject:obj1];
NSUInteger pos2 = [sortingByList indexOfObject:obj2];
if (pos1 < pos2)
return NSOrderedAscending;
else if (pos1 == pos2)
return NSOrderedSame;
else
return NSOrderedDescending;
}];
}