2016-12-01 1 views
0

Swift 3 2 진수 연산자 '==='를 두 개의 'Date'피연산자에 적용 할 수없는 이유는 무엇입니까?

public func ==(lhs: Date, rhs: Date) -> Bool { 
    return lhs === rhs || lhs.compare(rhs) == .orderedSame 
} 
스위프트 3로 업그레이드 한 후 지금은이 오류 ...

이 문제를 해결하는 방법에 대한 어떤 제안 "이진 연산자 ===Date 피연산자에 적용 할 수 없습니다"를 얻을?

+3

Swift 3 Date는 이미 Comparable 프로토콜을 준수하는 Struct입니다. http://stackoverflow.com/questions/39541879/swift-3-ambiguous-use-of-operator-when-comparing-two-dates/39541975#39541975 –

답변

5

스위프트 3 Date은 구조체 (값 유형)이므로 ID가 없으므로 ===이 될 수 없습니다.

실제로 Date 유형은 이미 a built-in ==을 제공하므로 사용자가 직접 구현할 필요가 없습니다.

+0

* ID가 없습니다. * 그게 무슨 뜻입니까? – Honey

+2

@Honey Identity = Reference = 포인터 값. 동일한 값을 가진 구조체는 서로 구별 할 수 없습니다. 즉, 각 구조체 값에 ID를 할당 할 수 없습니다. http://stackoverflow.com/a/25334176/224671을 참조하십시오. – kennytm

0

레오 버스들이시길는 문제를 해결하기 위해 기사 SOLUTION POST

내가 사용을> = 지적했다.

+0

비교 연산자를 사용할 수 있습니다. NSDate에 대해 이전에 정의한 모든 사용자 지정 연산자를 제거하십시오. –

관련 문제