[英]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.