为了对具有布尔值,整数和日期的自定义结构的数组进行排序。我已成功将以下语法用于布尔值,并且适用于“新娘”和“新郎”的情况。但是,当我尝试为2个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})
}
答案 0 :(得分:6)
不能直接比较可选项(比较SE-0121 – Remove Optional Comparison Operators)。但是您可以使用nil-coalescing运算符??
为没有创建日期的条目提供默认日期:
Images.sorted(by: {$0.create_dt ?? .distantPast > $1.create_dt ?? .distantPast })
对于.distantPast
,没有创建日期的条目将排序到列表的末尾。使用.distantFuture
,它们将被排序到列表的开头。