arrays – 对包含另一个可选项的可选项数组进行排序

如何对包含可选NSdate的选项数组进行排序?
class HistoryItem {
   var dateCompleted: NSDate?
}

let firstListObject = somelistofObject.last
let secondListObject = someOtherlistofObject.last
let thirdListObject = evenSomeOtherlistofObject.last //Last returns 'T?'

var array = [firstListObject,secondListObject,thirdListObject]

如何根据dateCompleted对数组进行排序?

您的排序功能可以使用可选链接和零的组合
合并运算符:
sort(&array) {
    (item1,item2) -> Bool in
    let t1 = item1?.dateCompleted ?? NSDate.distantPast() as! NSDate
    let t2 = item2?.dateCompleted ?? NSDate.distantPast() as! NSDate
    return t1.compare(t2) == NSComparisonResult.OrderedAscending
}

这会对dateCompleted值上的项以及所有项进行排序
是nil,dateCompleted == nil的项目被视为“在遥远的过去”
这样他们就可以在所有其他物品之前订购.

更新Swift 3(假设dateCompleted是一个日期):

array.sort { (item1,item2) -> Bool in
    let t1 = item1?.dateCompleted ?? Date.distantPast
    let t2 = item2?.dateCompleted ?? Date.distantPast
    return t1 < t2
}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...