簡體   English   中英

在Swift 3中對包含日期的字符串數組進行排序?

[英]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年更早。

我看過:

  1. (Swift 3)試圖在swift 3中按Date排序一個類對象數組?

  2. 按日期排序數組中的對象

我究竟做錯了什么?

謝謝!

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)

我建議你創建一個將StringDouble作為屬性的Object 並且您可以將Data作為計算屬性創建,該屬性將在String值上計算。 並使用Date computed屬性進行排序。

我相信這將使您的生活更輕松,並將代碼從元組重新編寫為對象。 稍后在排序字符串時很難找到錯誤。我確定你的第一個案例是數組中有3個元組只是巧合,它以正確的方式排序(這是猜測) ..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM