Сортировка массива на основе модели сравнения iOS

Student *s1 = [Student new];
s1.city = @"Delhi";

Student *s2 = [Student new];
s2.city = @"Mumbai";

NSArray *arrModels = @[s1,s2];
NSArray *arrCompareModel = @[@"Mumbai",@"Delhi"];

Мне нужно отсортировать arrModels на основе on arrCompareModel.

Все решения в сети относятся к возрастанию. Но вот у меня кастомная модель. Как мне этого добиться?


person Jeyanth    schedule 25.11.2016    source источник
comment
Используйте sortedArrayUsingComparator:, вы можете проверить stackoverflow.com/questions/38768463/ с той разницей, что indexForItem:inList: может быть просто [arrCompareModel indexOfObject:student1Or2AccordingToTheCase.city];   -  person Larme    schedule 25.11.2016
comment
проверь мой ответ   -  person jignesh Vadadoriya    schedule 25.11.2016


Ответы (2)


Вам нужно написать это для сортировки по убыванию

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"city" ascending:false];
NSArray *sortedArray = [arrModels sortedArrayUsingDescriptors:@[sortDescriptor]];
person jignesh Vadadoriya    schedule 25.11.2016
comment
Не в этом вопрос. Он хочет, чтобы товары были заказаны в порядке arrCompareModel. - person Larme; 25.11.2016
comment
это не похоже на то, что ищет OP. - person holex; 25.11.2016

Попробуйте что-нибудь подобное:

NSArray *sortedArray = [arrModels sortedArrayUsingComparator:^NSComparisonResult(Student *obj1, Student *obj2) {
    return [arrCompareModel indexOfObject:obj1.city] < [arrCompareModel indexOfObject:obj2.city];
}];
person Joseph El Khoury    schedule 25.11.2016