How to Sort an Array of NSDictionary using DateTime key (Swift 4)?

妖精的绣舞 提交于 2019-12-02 10:50:29

You do not need to convert into Date object, dateStrings direct comparison will also work.

array.sort { (dict1, dict2) -> Bool in

    /// Considering "transactionTime" key always exists.
    let transactionTime1 = dict1["transactionTime"]!
    let transactionTime2 = dict2["transactionTime"]!

    /// Sort in descending order
    return transactionTime1 > transactionTime2
}

In case you need some calculation on date objects then You can also convert the string into date objects at run time like below example:

let df = DateFormatter()
df.dateFormat = "dd-MM-yyyy HH:mm:ss"
array.sort { (dict1, dict2) -> Bool in

    /// Considering "transactionTime" key always exists.
    let transactionTime1 = dict1["transactionTime"]!
    let transactionTime2 = dict2["transactionTime"]!

    let date1 = df.date(from: transactionTime1)!
    let date2 = df.date(from: transactionTime2)!

    /// Sort in descending order
    return date1 > date2
}

print(array)

Output

[["transactionTime": "04-02-2020 18:32:21", "name": "Aida", "age": "22"], ["transactionTime": "02-02-2013 10:32:41", "name": "Atiqah", "age": "23"], ["transactionTime": "01-02-2011 12:32:39", "name": "Auni", "age": "24"]]

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!