2016-07-11 15 views
1

Das ist mein NSManagedObject:Kann nicht spezialisiert nicht-generischen Typen ‚Set‘

@objc(Order) 
class Order: NSManagedObject { 

    @NSManaged var orderItems: Set<OrderItem> //error: Cannot specialize non-generic type 'Set' 
} 

Wer weiß, warum es nicht funktioniert?

OrderItem Datei erstellt und arbeitet jedoch für folgende Erklärung abgegeben:

@NSManaged var orderItem: OrderItem 
+0

Funktioniert auf einem Spielplatz mit Xcode 7.3.1, welche Version von Swift verwenden Sie? –

+0

Derselbe Xcode, wie man die Version von Swift überprüft? –

+0

xcrun swift -version –

Antwort

2

Gerade als Referenz, wenn jemand auf diese Frage in Zukunft für diesen fiesen Fehler kommen sollte, da die Diskussion in den Kommentaren zu ging.

Ja, der Standardtyp Set in Swift ist generisch, aber in diesem Fall überschattete eine benutzerdefinierte nicht generische Klasse Set die Klasse, die von der Standardbibliothek der Sprache definiert wurde.

Besser immer wählen Sie unterschiedliche Namen für Ihre Klassen, um Namenskonflikte zu vermeiden. Bei Bedarf können Sie jedoch immer den vollständig qualifizierten Namen der Klassen verwenden, um auf die gewünschte Klasse zu verweisen.

Standardsprachklassen sind unter dem Swift. Namespace verfügbar, während Sie für andere Klassen den Namen des Moduls, gefolgt von einem Punkt und dem Namen der Klasse (z. B. Foundation.NSString) verwenden können.

Verwandte Themen