С момента перехода на Swift 3.0, а вместе с ним и изменения NSDate на Date, класс больше не соответствует протоколу NSCopying.Date.copy() в Swift 3.0
В Swift 2, это действительно было:
let newDate = oldDate.copy()
Но теперь возвращает ошибку компилятора.
В этом случае, что является лучшим способом дублирования объекта Date?
let newDate = Date(timeIntervalSince1970: oldDate.timeIntervalSince1970)
Это будет трюк, но это не кажется особенно элегантным. И это потенциально (теоретически) восприимчиво к потере точности, поскольку TimeInterval является Double (и мы не можем подтвердить, что внутренние объекты Date используют - или всегда будут использовать - Double).
Ваш ответ правильный - но если бы вы были извращенный, вы можете также сказать 'пусть newDate = ((oldDate as NSDate) .copy()) как! Дата' :) – Grimxn