对具有任意值的字典进行排序

时间:2018-11-25 13:52:17

标签: swift

我有这个[[String:Any]],其中每个元素都有这个:

["date":Date,"value":CGFloat]

我想按“日期”键排序。(日期向上或向下)

 let sortedArray = array.sort { ($0["date"] as? Date) < ($1["date"] as? Date) }

提供我无法比较2个日期的错误。

1 个答案:

答案 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 }