2017-01-23 44 views
1

由於切換到Swift 3.0,並且隨着NSDate到Date的更改,該類不再符合NSCopying協議。Swift 3.0中的Date.copy()

在斯威夫特2,這是有效的:

let newDate = oldDate.copy() 

但現在返回一個編譯器錯誤。

在這種情況下,複製Date對象的最佳方法是什麼?

let newDate = Date(timeIntervalSince1970: oldDate.timeIntervalSince1970) 

這將做到這一點,但它似乎並不特別優雅。當TimeInterval是Double(並且我們無法確認Date對象內部使用 - 或始終使用 - Double)時,它可能(理論上)容易丟失精度。

回答

5

回答我自己的問題,因爲我在完成鍵入之前就已經想出了它。希望它能幫助別人。

Swift 3中的日期現在是一個結構體,而不是一個類。這是一種價值類型。這意味着它並不需要被「複製」,只需將其分配給新變量將複製數據:

let newDate = oldDate 
+1

你的答案是正確的 - 但如果你是變態,你也可以說'讓newDate = ((oldDate as NSDate).copy())as!日期:) – Grimxn