2017-01-23 45 views
1

由于切换到Swift 3.0,并且随着NSDate到Date的更改,该类不再符合NSCopying协议。Swift 3.0中的Date.copy()

在斯威夫特2,这是有效的:

let newDate = oldDate.copy() 

但现在返回一个编译器错误。

在这种情况下,复制Date对象的最佳方法是什么?

let newDate = Date(timeIntervalSince1970: oldDate.timeIntervalSince1970) 

这将做到这一点,但它似乎并不特别优雅。当TimeInterval是Double(并且我们无法确认Date对象内部使用 - 或始终使用 - Double)时,它可能(理论上)容易丢失精度。

回答

5

回答我自己的问题,因为我在完成键入之前就已经想出了它。希望它能帮助别人。

Swift 3中的日期现在是一个结构体,而不是一个类。这是一种价值类型。这意味着它并不需要被“复制”,只需将其分配给新变量将复制数据:

let newDate = oldDate 
+1

你的答案是正确的 - 但如果你是变态,你也可以说'让newDate = ((oldDate as NSDate).copy())as!日期:) – Grimxn