繁体   English   中英

如何比较日期类型的2个操作数? 在Swift中对数组进行排序?

[英]How do you compare 2 operands of type Date? to sort an array in Swift?

为了对具有布尔值,整数和日期的自定义结构的数组进行排序。 我已成功将以下语法用于布尔值,并且适用于“新娘”和“新郎”的情况。 当我尝试为2个Date变量添加排序时,出现以下错误错误:

“二进制运算符'>'不能应用于两个'Date?' 操作数”

我的印象是,可以使用与正常的> < ==标准类似的方式比较Date值,但是我想我会收到错误,因为这些值未展开? 如果是正确的话,我认为我不能做一个“让日期”吗? 转换为未包装的日期,因此我不确定如何比较这些值。

    var sortedImages = [submitted_image]()
    switch sortOption {
    case .brideInPic:
        print("bride")
        sortedImages = Images.sorted(by: {$0.brideInPic && !$1.brideInPic})
        print("sortedImages: \(sortedImages.count), Images: \(Images.count)")
    case .groomInPic:
        print("groom")
        sortedImages = Images.sorted(by: {$0.groomInPic && !$1.groomInPic})
        print("sortedImages: \(sortedImages.count), Images: \(Images.count)")
    case .create_dt:
        print("create")
        sortedImages = Images.sorted(by: {$0.create_dt > $1.create_dt})
    }

不能直接比较可选项(比较SE-0121 –删除可选比较运算符 )。 但是您可以使用nil-coalescing运算符?? 为没有创建日期的条目提供默认日期:

Images.sorted(by: {$0.create_dt ?? .distantPast > $1.create_dt ?? .distantPast })

使用.distantPast ,没有创建日期的条目将排序到列表的末尾。 使用.distantFuture它们将被排序到列表的开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM