Überschrieben == Funktion für Gleichheitstyp nicht für benutzerdefinierte Klasse aufgerufen, die Unterklassen NSCoding und NSObject [duplizieren]

8

Die Klasse FooBar muss die Funktion == des Typs Equatable überschreiben.

Das Aufrufen von contains für ein Array von FooBar -Objekten bewirkt jedoch nicht, dass ein Haltepunkt in der benutzerdefinierten Funktion == aufgerufen wird. Ist es möglich, dass eine andere == -Funktion diese benutzerdefinierte überschreibt?

Hinweis: Da FooBar eine Unterklasse von NSCoding und NSObject sein muss, listet FooBar Equatable nicht als Protokoll auf, weil dies den folgenden Fehler verursacht:

  

Redundante Übereinstimmung von 'FooBar' mit Protokoll 'Equatable'

%Vor%     
Crashalot 07.05.2016, 07:34
quelle

2 Antworten

24

Da Ihre Klasse von NSObject erbt, müssen Sie nicht das schnelle Protokoll Equatable verwenden, sondern Sie müssen die NSObject Methode isEquals :

überschreiben

Swift 3.x

%Vor%

(Danke an Kamtschatka)

Swift 2.x

%Vor%     
Blake Lockley 07.05.2016, 07:39
quelle
3

Sie erhalten diesen Fehler, weil NSObject bereits durch seine isEqual-Methode mit Equatable übereinstimmt.

Ich bin mir also nicht sicher, ob dies der richtige Weg ist, aber Sie könnten die isEqual-Methode von NSObject überschreiben:

%Vor%     
Odrakir 07.05.2016 07:52
quelle

Tags und Links