2016-11-25 5 views
0

複数の日付があるテーブルビューがあります。最も降順の日付が上部((indexPath.row == 0))になり、過去の日付が下部((indexPath.row == ´lastRows´))で、今後の日付の間になるように日付を並べ替える必要があります。クローゼットで日付を最初に並べ替え、最後に最後の日付を並べ替えます

私は適切な解決策を見つけることなく周りを見てきました。次のコードでは、最初の日付が最初に表示されるだけです。過去の日付を望み通りに下に置くことができません。

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

あります:( は

  • 今後の一つの
  • 今後2
  • 過去の日付の並べ替えは、私が欲しい、問題の明確例えば絵を参照してください)これを達成する方法?または、日付が過去になったときに、日付(およびそのセル)をテーブルビューの一番下に押すことはできますか?

    enter image description here

答えて

0

ただ、 "より大きい" に署名し、 "より少ない" に変更:

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

また、reverse()関数を使用して配列を反転することもできます。 – kevin

+0

@kkoltzauそれはうまくいくかもしれませんが、複雑さは必要ありません。 – Alexander

+0

これは、 "Upcoming 2"をトップと過去の日付とボトムに配置したい場合にはうまくいくでしょう。しかし、私がやろうとしていることは、過去の時制になっているので、 "Upcoming 1"と "Upcoming 2"と "Past Date"を一番下にすることです。 @AlexanderMomchliov – Mate

0

よりもむしろ.sortを使用し、使用がソートされたコピーを取得する.sorted。次にソートされたコピーを検索して、現在の時刻がどこに属しているかを見つけます。このインデックスを使用して、いくつかのスライスを作成し、スライスを元の配列に戻したい場所にコピーします。

関連する問題