gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 21:50:33 24 4
gpt4 key购买 nike

如何对包含可选 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]

如何根据完成日期对数组进行排序?

最佳答案

您的排序函数可以结合使用可选链和 nil合并运算符:

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 是一个 Date):

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

关于arrays - 对包含另一个可选项的可选项数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26191404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com