NSMutableArray sortUsingDescriptors - PullRequest
       28

NSMutableArray sortUsingDescriptors

2 голосов
/ 16 февраля 2012

У меня есть NSMutableArray "days", которые содержат 7 NSMutableArrays, 7 NSMutableArrays содержат класс Lesson.

@interface Lesson : NSObject <NSCoding>{
    NSString *time1;
    NSString *time2;
    NSString *predmet;
    NSString *namPrepod;
    NSString *zamet;
} 

Раньше я делал сортировку с sortedArrayUsingComparator, но теперь я должен сделать сортировку с sortedArrayUsingDescriptors;

sortedArrayUsingComparator похоже

chetNedel.sunday = [NSMutableArray arrayWithArray:[chetNedel.sunday sortedArrayUsingComparator:^(id cont1, id cont2) { return [[(Lesson *) cont1 time1] compare:[(Lesson *) cont2 time1]]; }]];
[chetNedel.days removeObjectAtIndex:0];
[chetNedel.days insertObject:chetNedel.sunday atIndex:0];

как будет сортироваться с sortedArrayUsingDescriptors?

1 Ответ

3 голосов
/ 16 февраля 2012

Это метод, который вы будете использовать на NSMutableArray, который хотите отсортировать.

- (void)sortUsingDescriptors:(NSArray *)sortDescriptors

Итак, вы хотите отсортировать массив объектов Урока.Параметр NSArray будет массивом NSSortDescriptor объектов.

NSSortDescriptor описывает, как вы собираетесь сортировать объект на основе его свойств.Таким образом, в вашем случае сортировки объектов урока вы собираетесь отсортировать некоторые или все имеющиеся у вас строковые свойства.

Это дескриптор сортировки для вашего объекта урока, мы будем сортировать его по их свойству time1.

NSSortDescriptor *time1Descriptor = [[NSSortDescriptor alloc] initWithKey:@"time1" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];

Ключевым параметром является свойство ваших объектов, которое вы хотите сравнить (или выможет использовать time2, premedt, ect).Свойство ascending является логическим для того, хотите ли вы, чтобы отсортированные значения возвращались в возрастающем или убывающем порядке.Свойство селектора - это метод, который будет использоваться для сравнения свойств вашего объекта.

Теперь вернемся к NSArray дескрипторам сортировки.В этот момент вы начнете создавать свой массив дескрипторов сортировки.

NSArray *sortDescriptorArray = [[NSArray alloc] initWithObjects:time1Descriptor, nil];

И передадите этот массив дескрипторов сортировки в оригинальный метод: - (void)sortUsingDescriptors:(NSArray *)sortDescriptors

[myArrayOfLessions sortUsingDescriptors:sortDescriptorArray];

Ваш исходный массивуроков теперь отсортировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...