Swift 3为什么不能使用二元运算符' ==='适用于两个日期'操作数?

时间:2016-12-01 16:41:51

标签: swift3

public func ==(lhs: Date, rhs: Date) -> Bool {
  return lhs === rhs || lhs.compare(rhs) == .orderedSame
}

升级到Swift 3后,我现在收到此错误..."二进制运算符===无法应用于两个Date个操作数"

有关如何纠正此问题的任何建议吗?

3 个答案:

答案 0 :(得分:5)

在Swift 3中Date是一个结构(值类型),没有身份,因此不能==='。

事实上,Date类型已提供a built-in ==,因此您无需自行实施。

答案 1 :(得分:0)

虚拟代码段,以供将来参考。主要部分是使用timeIntervalSinceNow,它将转换为Double然后进行比较

let inputFormatter = DateFormatter()
        inputFormatter.timeZone = TimeZone(abbreviation: "GMT+0:00")
        inputFormatter.dateFormat = "MMM dd, yyyy hh:mm:ss a"

        dataArray = dataArray.sorted(by: { (crm1 : CRM, crm2 : CRM) -> Bool in
             inputFormatter.date(from: crm1.date1!)!.timeIntervalSinceNow <= inputFormatter.date(from: crm2.date1!)!.timeIntervalSinceNow
        })

答案 2 :(得分:0)

我已经通过强制打开日期对象来解决了

minLength="1"
相关问题