2016-08-03 7 views
0

Ich habe den folgenden Code:Swift Protokollkonformität in einer Oberklasse erklärt nicht erkannt

import RealmSwift 
class MyClass:Object{ 

} 
func test(){ 
    let set = Set<MyClass>() 
} 

ich eine Kompilierung Fehler: Typ ‚MyClass‘ entspricht nicht Protokoll ‚Hashable‘ auf dieser Linie:

let set = Set<MyClass>() 

MyClass erweitert Realms Klassenobjekt, wodurch RLMObjectBase erweitert wird, wodurch NSObject erweitert wird. NSObject entspricht Hashable. Es ist in einer Erweiterung deklariert.

Warum stimmt MyClass nicht mit Hashable überein, da eine seiner Superklassen diesem entspricht?

Außerdem, wenn ich hinzufügen Hashable wie folgt aus:

class MyClass:Object, Hashable 

dann der Fehler verschwindet, aber eine andere colegue von mir, die am gleichen Projekt arbeitet, erhält einen Kompilierung-Fehler:

redundant protocol conformance

Dieser Fehler bedeutet, dass eine Unterklasse die Konformität mit einem Protokoll deklariert, das bereits von einer Oberklasse geerbt wurde.

Versteht jemand, was hier vor sich geht?

+1

Wenn es sich in zwei Computern anders verhält, ist es wahrscheinlich ein Xcode-Cache-Problem, versuchen Sie, das Projekt zu bereinigen und abgeleitete Daten zu löschen. –

+0

Dies wurde im Swift-Compiler behoben. Siehe https://github.com/realm/realm-cocoa/issues/2519 – jpsim

Antwort

0

Ich aktualisierte xCode von 7.3 bis 7.3.1 und das behob das Problem. Danke an den Kommentar von jpsim, der mich in die richtige Richtung wies.

Verwandte Themen