由于切换到 Swift 3.0,以及随之而来的 NSDate 到 Date 的更改,该类不再符合 NSCopying 协议(protocol)。

在 Swift 2 中,这是有效的:

let newDate = oldDate.copy()

但现在返回编译器错误。

在这种情况下,复制 Date 对象的最佳方法是什么?
let newDate = Date(timeIntervalSince1970: oldDate.timeIntervalSince1970)

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

最佳答案

在我完成输入之前回答我自己的问题。希望它会帮助别人。

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

let newDate = oldDate

关于ios - Swift 3.0 中的 Date.copy(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41804779/

10-16 23:31