2017-01-23 2 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의 날짜가 이제는 클래스가 아닌 struct입니다. 어떤 값 유형입니다. 즉, '복사'할 필요가 없다는 의미입니다. 새로운 변수에 할당하면 데이터가 복사됩니다.

let newDate = oldDate 
+1

당신의 답은 맞습니다. 그러나 만약 당신이 비뚤어지면'let newDate = ((oldDate as NSDate) .copy())! 날짜':) – Grimxn