当前位置: 首页 > 面试题库 >

排序包含其他可选项目的可选项目数组

刘选
2023-03-14
问题内容

如何对包含可选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对数组排序?


问题答案:

您的排序功能可以结合使用可选链接和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的 更新(假设dateCompletedDate):

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


 类似资料:
  • 进程优先权 当计划线程时使用的优先权。在有需要时可调整优先权到较高或较低。 文件位置 你可以为不同的文件类型改变文件夹。在默认情况下,大部分的文件设置在设置位置。然而, 一些文件是保存在 profiles目录和全部日志文件保存在 logs 目录。 文件关联(只限于完整版本) 文件关联是 Navicat 使用什么来打开 Navicat 已保存的文件。例如:.npt 文件(数据传输设置文件)将会使用数

  • 我希望,如果我选择“mammals”,动物选择选项只显示值为1的选项data-animal_class。 我知道如何获得哺乳动物值,但我不知道如何使用过滤器 这是我的代码:

  • Swift 4还引入了Optionals类型,它处理缺少值。 Optionals说“有一个值,它等于x”或“根本没有值”。 一个Optional本身就是一种类型,实际上是Swift 4的新超级动力枚举之一。 它有两个可能的值, None和Some(T) ,其中T是Swift 4中可用的正确数据类型的关联值。 这是一个可选的整数声明 - var perhapsInt: Int? 这是一个可选的St

  • Groovy是一种“可选”类型的语言,在理解语言的基础知识时,这种区别很重要。 与Java(一种“强”类型语言)相比,编译器知道每个变量的所有类型,并且可以在编译时理解和遵守合同。 这意味着可以在编译时确定方法调用。 在Groovy中编写代码时,开发人员可以灵活地提供类型或不提供类型。 这可以提供一些简单的实现,并且在正确使用时,可以以强大且动态的方式为您的应用程序提供服务。 在Groovy中,可

  • Uragano还提供了一些可选项配置,用于服务调优 service.AddUragano(context.Configuration, builder => { builder.AddClient<LoadBalancingPolling>(); builder.

  • Gradle构建脚本创建了一个EAR文件,其中包含一些JAR和一个war。这之前都是在Maven中完成的,现在是迁移到Gradle的主题。 梯度1.12 Groovy 2.2.1 Java 1.7.0_60 Oracle 日食开普勒SR 2 ...很简单:到目前为止,它是有效的——耳朵插件创建耳朵文件,其中包含来自 在“dependencies”部分中,“core-0.0.1.jar”位于ear根