2017-01-23 13 views
1

Swift 3.0に切り替わり、それに伴ってNSDateがDateに変更されたので、クラスはもはやNSCopyingプロトコルに準拠しなくなりました。Swift 3.0のDate.copy()

let newDate = oldDate.copy() 

しかし、今のコンパイラエラーを返します。

はスウィフト2では、これは有効でした。

この場合、Dateオブジェクトを複製する最も良い方法は何ですか?

let newDate = Date(timeIntervalSince1970: oldDate.timeIntervalSince1970) 

これはトリックですが、特に優雅に見えません。また、TimeIntervalがDoubleであるため、潜在的に(理論的に)精度が低下する可能性があります(Dateオブジェクトが内部で使用するか、常にDoubleを使用するかを確認する方法はありません)。

答えて

5

入力を終える前に私の質問に答えました。うまくいけばそれは他の誰かを助けるでしょう。

Swift 3の日付は、クラスではなく構造体になりました。値の型です。つまり、コピーする必要はありません。新しい変数に割り当てるだけで、データはコピーされます。

let newDate = oldDate 
+1

あなたの答えは正しいですが、もしあなたが嫌なことがあったとしても、let newDate = ((oldDate as NSDate).copy())を!日付 ':) – Grimxn