您如何比较2个类型日期操作数?在Swift中排序一个阵列



,以对具有bool,整数和日期的自定义结构进行分类。我成功地使用了下面的语法来获得布尔值,它适用于"新娘"one_answers"新郎"案例。当我尝试为2个日期变量添加排序时,我得到了错误错误:

"二进制运算符'>'不能应用于两个"日期?"操作数"

i的印象是,日期值可以与正常 > < == 标准进行比较,但是我认为我会遇到错误,因为值未解开?如果那是正确的,我认为我不能做一个日期吗?进入未包装的日期,因此我不确定如何比较这些值。

    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 oterator ??提供无创建日期的条目的默认日期:

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

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

最新更新