我有这个[[String:Any]]
,其中每个元素都有这个:
["date":Date,"value":CGFloat]
我想按“日期”键排序。(日期向上或向下)
let sortedArray = array.sort { ($0["date"] as? Date) < ($1["date"] as? Date) }
提供我无法比较2个日期的错误。
答案 0 :(得分:4)
sort
正在变异,因此数组必须为var
并且没有返回值,并且可以强制展开或
array.sort { ($0["date"] as! Date ) < ($1["date"] as! Date ) }
或
array.sort { ($0["date"] as? Date ?? Date() ) < ($1["date"] as? Date ?? Date() ) }
或sorted
let sortedArray = array.sorted { ($0["date"] as? Date ?? Date() ) < ($1["date"] as? Date ?? Date() ) }
强烈推荐
struct Root {
let date:Date
let value:CGFloat
}
var array = [Root(date: Date(), value: 12),Root(date: Date(), value: 14),Root(date: Date(), value: 15)]
let sortedArray = array.sorted { $0.date < $1.date }
// or
let sortedArray = array.sorted { $0.date.compare($1.date) == .orderedAscending }