2016-05-25 2 views
1

У меня есть набор словарей, в которых словарь похож на этот.Как отсортировать массив словарей по дате, используя дескриптор сортировки

Rows = (
    "<DriverRowRecord: 0x7f8de3a240d0>", 
    "<DriverRowRecord: 0x7f8de3a18790>" 
); 
Sections = "<DriverSectionRecord: 0x7f8de3a2c5a0>"; 

Здесь DriverRowRecord и DriverSectionRecord отдельные классы. В DriverSectionRecord У меня есть date собственности.

@interface DriverSectionRecord : NSObject 
    @property(nonatomic,retain)NSDate *date; 
@end 

Теперь я хочу, чтобы отсортировать массив, основанный на DriverSectionRecord «s date собственности. Если словарь содержит ключ date, я сортирую его так.

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES]; 
    NSArray *descriptors = [NSArray arrayWithObject:descriptor]; 
    NSArray *Ascendingorder = [Array sortedArrayUsingDescriptors:descriptors]; 

Однако, это не работает, как date является собственностью DriverSectionRecord. Как я могу это достичь?

+0

Вы хотите отсортировать 'Rows' на основе одного свойства' DriverSectionRecord'? Какие? – trojanfoe

+1

'Sections.date'? (если «Разделы» действительно являются ключом для значения «DriverSectionRecord», чувствительного к регистру.) – Larme

+0

В моем массиве словарей каждый словарь содержит «DriverSectionRecord», у которого есть дата. Я хочу сортировать, основываясь на этой дате. Важно то, что у меня нет слова «дата» в моем словаре. –

ответ

0
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"Sections.date" ascending:YES]; 
NSArray *descriptors = [NSArray arrayWithObject:descriptor]; 
NSArray *Ascendingorder = [Array sortedArrayUsingDescriptors:descriptors]; 

У меня есть решение из комментариев. Спасибо всем за такое замечательное разъяснение.

Смежные вопросы