微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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
}

原文地址:https://www.jb51.cc/swift/320133.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐