排序可选项目的数组保存又一可选 [英] Sort an array of optional items that holds yet another optional

查看:126
本文介绍了排序可选项目的数组保存又一可选的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我怎么能进行排序自选数组保存一个可选的NSDate?

How can I sort an array of optionals that holds an optional 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阵列?

How can I sort array based on dateCompleted?

推荐答案

您的排序功能,可以使用另购的链接和零组合
合并运算符:

Your sort function could use a combination of optional chaining and the nil coalescing operator:

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 值项的所有项目进行排序,并
dateCompleted ==零是在遥远的过去当作物品
使他们之前的所有其他项目进行排序。

This would sort the items on the dateCompleted value, and all items that are nil and items with dateCompleted == nil are treated as "in the distant past" so that they are ordered before all other items.

这篇关于排序可选项目的数组保存又一可选的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆