[英]Sorting a tuple array of Strings that contains a date in Swift 3?
我目前有一个元组数组,其第一个值是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
年更早。
我看过:
我究竟做错了什么?
谢谢!
import Foundation
var tupleArray = [("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)]
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yy"
tupleArray = tupleArray.sorted {
guard let date1 = dateFormatter.date(from:$0.0), let date2 = dateFormatter.date(from:$1.0) else { return false}
return date1 > date2
}
print(tupleArray)
我建议你创建一个将String
和Double
作为属性的Object
。 并且您可以将Data作为计算属性创建,该属性将在String值上计算。 并使用Date
computed属性进行排序。
我相信这将使您的生活更轻松,并将代码从元组重新编写为对象。 稍后在排序字符串时很难找到错误。我确定你的第一个案例是数组中有3个元组只是巧合,它以正确的方式排序(这是猜测) ..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.