Как отсортировать изменяемый массив со ссылкой на дату, которая сохраняется как «объект для ключа» в iphone? - PullRequest
0 голосов
/ 19 февраля 2010

Я новичок в разработке для iphone. У меня недавно появился изменяемый массив, в котором такие значения, как заголовок, дата, URL и сводка, хранятся как «объект для ключа». Ключами являются myurl, mudate, mytitle, mysummary. Я хочу отсортировать этот изменяемый массив по дате и распечатать все значения в соответствии с этим. Как я могу этого добиться? Пожалуйста, помогите мне. Спасибо.

            [item setObject:currentTitle forKey:@"title"];
            [item setObject:currentLink forKey:@"link"];
            [item setObject:currentSummary forKey:@"description"];
            [item setObject:currentDate forKey:@"pubDate"];//
            [item setObject:currentImage forKey:@"imagePath"];

            [recent addObject:[item copy]];

Все содержимое проанализировано в xml.

Ответы [ 3 ]

7 голосов
/ 19 февраля 2010

Итак, я думаю, у вас есть множество словарей. Есть несколько способов сделать это, но я рекомендую использовать NSSortDescriptor. Вы хотите сделать что-то вроде этого:

//myArray is the name of the your array
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"mydate" ascending:YES]; // If you want newest at the top, pass NO instead.
[myArray sortUsingDescriptor:descriptor]; // This will modify myArray. To return a new array and leave the original untouched, use -sortedArrayUsingDescriptor:.
[descriptor release];
NSLog(@"%@", myArray); // Print.

Если у вас уже есть даты как NSDate объектов, это будет работать нормально. Если нет, то вам нужно либо просмотреть цикл и предварительно проанализировать даты, либо использовать метод initWithKey:ascending:selector: из NSSortDescriptor, который позволяет вам определять собственный метод сравнения.

0 голосов
/ 03 апреля 2017

Swift 3.0

 let descriptor = NSSortDescriptor(key: "Your array KEY", ascending: false)

 yourArray.sort(using: [descriptor])

для сортировки по возрастанию сделайте ее "истинной", а в противном случае - "ложной".

0 голосов
/ 19 февраля 2010
...