加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:47:20 所属栏目:百科 来源:网络整理
导读:如何对包含可选NSdate的选项数组进行排序? class HistoryItem { var dateCompleted: NSDate?}let firstListObject = someListOfObject.lastlet secondListObject = someOtherListOfObject.lastlet thirdListObject = evenSomeOtherListOfObject.last //Last
如何对包含可选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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读