【发布时间】:2017-07-30 19:10:52
【问题描述】:
我目前有一个元组数组,它的第一个值是String 类型,第二个值是Double 类型。第一个值包含日期,格式为"MM/dd/yy"。
由于我的代码冲突,我没有使用 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(是的!)属性和用于字符串表示的计算属性的自定义结构或类。它让生活更轻松。 -
@vadian 我明白,但使用替代
Date不适用于我当前的实现...有没有更好的解决方案来排序日期Strings然后切换到Date对象? -
然后考虑改变你的实现。不要与框架抗争。
-
您可以为您的特定日期字符串表示编写自己的自定义排序逻辑,但正如@vadian 之前所说,更改您的实现以使用
Date对象是更容易和更好的解决方案。