Date.copy() 在 Swift 3.0 中
Date.copy() in Swift 3.0
自从切换到 Swift 3.0,并随之将 NSDate 更改为 Date,class 不再符合 NSCopying 协议。
在 Swift 2 中,这是有效的:
let newDate = oldDate.copy()
但是现在returns一个编译器错误。
在这种情况下,复制 Date 对象的最佳方法是什么?
let newDate = Date(timeIntervalSince1970: oldDate.timeIntervalSince1970)
这样就可以了,但看起来不是特别优雅。并且它可能(理论上)容易受到精度损失的影响,因为 TimeInterval 是 Double(而且我们无法确认 Date 对象内部使用 - 或始终使用 - Double)。
在我完成输入之前回答我自己的问题。希望它能对其他人有所帮助。
Swift 3 中的日期现在是一个结构,而不是 class。这是一个值类型。这意味着它不需要是'copied',只需将它分配给一个新变量就会复制数据:
let newDate = oldDate
自从切换到 Swift 3.0,并随之将 NSDate 更改为 Date,class 不再符合 NSCopying 协议。
在 Swift 2 中,这是有效的:
let newDate = oldDate.copy()
但是现在returns一个编译器错误。
在这种情况下,复制 Date 对象的最佳方法是什么?
let newDate = Date(timeIntervalSince1970: oldDate.timeIntervalSince1970)
这样就可以了,但看起来不是特别优雅。并且它可能(理论上)容易受到精度损失的影响,因为 TimeInterval 是 Double(而且我们无法确认 Date 对象内部使用 - 或始终使用 - Double)。
在我完成输入之前回答我自己的问题。希望它能对其他人有所帮助。
Swift 3 中的日期现在是一个结构,而不是 class。这是一个值类型。这意味着它不需要是'copied',只需将它分配给一个新变量就会复制数据:
let newDate = oldDate