Swift 3 - 比较两个日期时不明确地使用<运算符

Dal*_*las 9 nsdate ios swift swift3

在swift中比较两个日期时,我可以比较使用>,但不能<.startTime,endTime和Date()都是Date类型(以前是NSDate)

   //Broken Code
   if Date() >= startTime && Date() < endTime
   {
       ...
   }
   Gives ambiguous use of < operator error

  //Working Code
   if Date() >= startTime && endTime > Date()
   {
       ...
   }
Run Code Online (Sandbox Code Playgroud)

这是不是有效的特定原因?

我在尝试查找苹果文档时实际上找到了这个例子,他们实际上使用了这个代码 http://www.globalnerdy.com/2016/08/29/how-to-work-with-dates-and-times-in -swift -3-部分-3-日期算术/

我开始想知道是否可能是使用&&运算符,或者可能仅仅是订单的问题,但是甚至将代码本身作为

if startTime < endTime {...}
Run Code Online (Sandbox Code Playgroud)

但它返回相同的顺序.

显然我找到了解决方法,但我很好奇为什么会这样.

Leo*_*bus 24

你可能已经扩展NSDate到符合Swift 2中的类似协议.只需删除它,因为Date现在符合Swift3中的Comparable协议.

  • 当一些来自互联网的随机家伙比我更了解我的代码时...... (11认同)