2016-12-01 13 views
0

Swift 3バイナリ演算子 '==='を2つの 'Date'オペランドに適用できないのはなぜですか?

public func ==(lhs: Date, rhs: Date) -> Bool { 
    return lhs === rhs || lhs.compare(rhs) == .orderedSame 
} 
スウィフト3にアップグレードした後、私は今、このエラー...

これを修正する方法上の任意の提案を「バイナリ演算子===は2つの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 = Pointerの値です。同じ値を持つ構造体は互いに区別できません。つまり、各構造体値にIDを割り当てることはできません。 http://stackoverflow.com/a/25334176/224671を参照してください。 – kennytm

0

レオDabusは、私は問題を修正するために=>中古品にSOLUTION POST

を指摘しました。

+0

任意の比較演算子を使用できます。以前にNSDateで定義したすべてのカスタム演算子を削除してください –

関連する問題