2016-11-25 3 views
0

У меня есть табличное представление, в котором есть несколько дат. Мне нужно отсортировать даты так, чтобы наибольшая нисходящая дата была наверху ((indexPath.row == 0)), а прошлые даты должны быть внизу ((indexPath.row == ´lastRows´)) и между другими предстоящими датами.Отсортировать даты с шкафами до сих пор внизу и внизу внизу

Я искал вокруг, не найдя подходящего решения. Следующий код показывает только самую раннюю дату - если не хотите, чтобы даты прошлых дней были внизу. (Смотри рисунок для более четкого примера проблемы, вроде я хочу:

  • Предстоящие Один
  • Наступающий 2
  • Past Дата )

    dqItems.sort(by: {$0.date < $1.date})

Есть способ сделать это? Альтернативно нажатие даты (и ее ячейки) в нижней части таблицы отображается, когда дата становится прошлым?

enter image description here

ответ

0

Просто измените "меньше" знак "больше":

dqItems.sort(by: {$0.date > $1.date}) 
+0

В качестве альтернативы вы можете изменить массив с помощью функции reverse(). – kevin

+0

@kkoltzau Это может сработать, но это бесполезная сложность. – Alexander

+0

Это сработает, если я захочу поставить «Предстоящие 2» в верхней и прошлых датах и ​​в нижней части. Но я пытаюсь сделать «Предстоящий 1», а внизу «Предстоящие 2» и «Прошлая дата» внизу, так как это было в прошедшем времени. @AlexanderMomchliov – Mate

0

Вместо того чтобы использовать .sort, использование .sorted, чтобы получить отсортированный копию. Затем найдите отсортированную копию, чтобы найти, где принадлежит текущее время. Используйте этот индекс, чтобы сделать несколько фрагментов и скопируйте фрагменты, где вы хотите их (в исходном массиве).

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