ios - Swift 3.0 中的 Date.copy()

标签 ios swift nscopying

自从切换到 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 中的日期现在是一个结构,而不是一个类。这是一个值类型。这意味着它不需要被“复制”,只需将其分配给一个新变量即可复制数据:

let newDate = oldDate

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

相关文章:

swift - FIRInstanceID.instanceID().token() 和 Messaging.messaging().fcmToken 有什么区别?

objective-c - 在 Objective-C 中使用 instancetype 作为副本的返回类型?

objective-c - UI 设置代码在哪里?

swift - 在 Swift 中为更多 View Controller 自定义 TableView ?

iphone - 释放 managedObjectContext 对象 c

ios - Realm.io - 从不正确的线程快速访问的 Realm

ios - 浅拷贝与深拷贝问题 iOS Swift

ios - 在 UIPopoverController 中以可变宽度显示 UITableViewController

ios - 如何使用蓝牙 LE iOS 在桌面 View 上显示找到的设备列表