Сортировать массив со строковыми датами Цель C - PullRequest
1 голос
/ 03 июня 2011

У меня есть NSMutableArray of Strings. Строки в массиве преобразуются из дат в строки, и мне нужно отсортировать их и показать их в виде таблицы.

Мне нужно:

24 июня 2011 г. 26 июня 2011 г. 1 июля 2011 года

и т. Д.

Я знаю, что вопросы, подобные этому, были заданы, но я не получил его на работу. Поэтому я был бы очень признателен, если бы кто-нибудь мог мне помочь!

Ответы [ 3 ]

4 голосов
/ 03 июня 2011

Сортируйте их, пока они еще не датированы, сохраняйте их в виде отсортированного списка дат и форматируйте их только как текст, необходимый для отображения (т. Е. Во время -tableView:cellForIndexPath:).

В качестве альтернативы ISO8601 форматов даты (пример форматированной даты будет 20110603T1345.123-4) в основном сортируются лексикографически так же, как и даты.Времена в разных часовых поясах или в летнюю смену могут лишить законной силы это свойство, поэтому даты с датами по-прежнему будут лучшим выбором.

0 голосов
/ 03 июня 2011

Ваш NSMuatbleArray должен иметь объект NSDate.

Сначала вам нужно отсортировать массив с помощью -[NSMutableArray sortUsingSelector:] и передать @ селектор (сравните:) .

Функция compare: в NSDate сделает всю работу за вас и отсортирует массив в порядке возрастания.

После выполнения вышесказанного вам просто нужно вызвать reloadData функцию UITableView.

0 голосов
/ 03 июня 2011

Простой способ сделать это - создать функцию вида

NSInteger funcName(id left, id right, void* extra);

, после чего вы можете использовать NSMutableArray sortUsingFunction:context:, передав функцию сравнения. Джереми прав, утверждая, что даты легче сортироватьони встроили функции сравнения:

– isEqualToDate:
– earlierDate:
– laterDate:
– compare:

См. NSMutableArray для сортировки информации и NSDate для методов сравнения

...