【问题标题】:Date.copy() in Swift 3.0Swift 3.0 中的 Date.copy()
【发布时间】:2017-01-23 11:01:12
【问题描述】:

自从切换到 Swift 3.0,以及随之而来的 NSDate 更改为 Date,该类不再符合 NSCopying 协议。

在 Swift 2 中,这是有效的:

let newDate = oldDate.copy()

但现在返回编译器错误。

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

let newDate = Date(timeIntervalSince1970: oldDate.timeIntervalSince1970)

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

【问题讨论】:

    标签: ios swift nscopying


    【解决方案1】:

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

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

    let newDate = oldDate
    

    【讨论】:

    • 你的答案是正确的——但如果你是反常的,你也可以说let newDate = ((oldDate as NSDate).copy()) as! Date :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多