Swift3 Swift 3为什么可以';t二进制运算符'===';适用于两个';日期';操作数?

Swift3 Swift 3为什么可以';t二进制运算符'===';适用于两个';日期';操作数?,swift3,Swift3,升级到Swift 3后,我现在收到此错误。。。“二进制运算符==不能应用于两个日期操作数” 关于如何更正此问题的任何建议?在Swift 3中是一种结构(值类型),没有标识,因此无法=' 事实上,Date类型已经提供了,所以您不需要自己实现它。在Swift 3中是一个结构(值类型),没有标识,因此不能='ed 事实上,Date类型已经提供了,所以您不需要自己实现它 我用>=来纠正这个问题。利奥·达布斯指出了一篇文章 我用>=来纠正这个问题。虚拟代码片段供将来参考。主要部分是使用timeInterv

升级到Swift 3后,我现在收到此错误。。。“二进制运算符
==
不能应用于两个
日期
操作数”

关于如何更正此问题的任何建议?

在Swift 3中是一种结构(值类型),没有标识,因此无法
=
'

事实上,
Date
类型已经提供了,所以您不需要自己实现它。

在Swift 3中是一个结构(值类型),没有标识,因此不能
=
'ed


事实上,
Date
类型已经提供了,所以您不需要自己实现它


我用>=来纠正这个问题。

利奥·达布斯指出了一篇文章


我用>=来纠正这个问题。

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

public func ==(lhs: Date, rhs: Date) -> Bool {
  return lhs === rhs || lhs.compare(rhs) == .orderedSame
}
let inputFormatter=DateFormatter()
inputFormatter.timeZone=时区(缩写:“GMT+0:00”)
inputFormatter.dateFormat=“mm dd,yyyy hh:mm:ss a”
dataArray=dataArray.sorted(按:{(crm1:CRM,crm2:CRM)->Bool-in

inputFormatter.date(from:crm1.date1!)!.timeIntervalSinceNow虚拟代码段供将来参考。主要部分是使用
timeIntervalSinceNow
,它将转换为
Double
,然后进行比较

public func ==(lhs: Date, rhs: Date) -> Bool {
  return lhs === rhs || lhs.compare(rhs) == .orderedSame
}
let inputFormatter=DateFormatter()
inputFormatter.timeZone=时区(缩写:“GMT+0:00”)
inputFormatter.dateFormat=“mm dd,yyyy hh:mm:ss a”
dataArray=dataArray.sorted(按:{(crm1:CRM,crm2:CRM)->Bool-in

inputFormatter.date(from:crm1.date1!)!.timeIntervalSinceNow我已经通过强制取消包装日期对象解决了它

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
        })

我通过强制打开日期对象解决了这个问题

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
        })

Swift 3 Date是一个已经符合可比协议的结构。Swift 3 Date是一个已经符合可比协议的结构。没有标识这意味着什么?@Honey Identity=Reference=Pointer value。具有相同值的结构彼此无法区分,即您不能为每个结构分配标识ct值。请参阅。没有标识这意味着什么?@Honey Identity=Reference=指针值。具有相同值的结构彼此无法区分,即不能为每个结构值分配标识。请参阅。您可以使用任何比较运算符。只需删除以前为NSC定义的所有自定义运算符可以使用任何比较运算符。只需删除以前为NSDate定义的所有自定义运算符