Swift 3.0中的Date.copy()

时间:2017-01-23 11:01:12

标签: ios swift nscopying

由于切换到Swift 3.0,并且随着NSDate更改为Date,该类不再符合NSCopying协议。

在Swift 2中,这是有效的:

let newDate = oldDate.copy()

但现在返回编译器错误。

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

let newDate = Date(timeIntervalSince1970: oldDate.timeIntervalSince1970)

这可以解决问题,但它看起来并不特别优雅。并且它可能(理论上)容易失去精度,因为TimeInterval是Double(我们无法确认Date对象内部使用 - 或者总是使用 - Double)。

1 个答案:

答案 0 :(得分:9)

回答我自己的问题,因为在我完成输入之前我已经弄明白了。希望它会帮助别人。

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

let newDate = oldDate