私は現在、最初の値の型がString
で、2番目の値がDouble
のタプル配列を持っています。最初の値には日付が含まれ、形式は"MM/dd/yy"
です。Swift 3で日付を含む文字列のタプル配列をソートする?
私はコードが矛盾しているためDate
オブジェクトを使用していません。
MM
のため、この配列を降順(最近から古いもの)で並べ替えることができません。
[("07/30/17", 5.0), ("08/30/17", 9.0), ("05/30/17", 5.0), ("05/28/17", 6.0)]
tupleArray = tupleArray.sort({$0.0 > $1.0})
は以下を生成する呼び出し:例えば、私の配列は、以下が含まれてい
[("08/30/17", 9.0), ("07/30/17", 5.0), ("05/30/17", 5.0), ("05/28/17", 6.0)]
期待通りに動作します。しかし
、私はString
エントリ"08/30/16"
を追加した場合、同じ種類の関数を呼び出すと、以下を生成します。
[("08/30/17", 9.0), ("08/30/16", 30.0), ("07/30/17", 5.0), ("05/30/17", 5.0), ("05/28/17", 6.0)]
"08/30/16"
それが最後のインデックスであるべきとき年16
が古いため、第二のインデックスであります17
。
私が見てきた:
私が間違って何をしているのですか?
ありがとうございます!
日付文字列をソートするのは面倒で面倒です。タプルの代わりに、格納された 'Date'(yes!)プロパティと文字列表現の計算されたプロパティを持つカスタム構造体またはクラスを使用するオブジェクト指向を考えてください。人生はずっと楽になります。 – vadian
@vadian私は理解していますが、代わりの 'Date'を使っても私の現在の実装ではうまくいきません。' Strings'を並べ替えて 'Date'オブジェクトに切り替えるより良い解決策がありますか? – Pangu
次に、実装を変更することを検討してください。フレームワークと戦わないでください。 – vadian