2016-04-05 12 views
0

Ich habe eine Seite, die viele [Wort]Wie man richtig .allObjects von einer Eins-zu-Beziehung abrufen

class Page : NSManagedObject { 
    @NSManaged var words: NSSet 

ich zugreifen können dann hat, dass über:

let words = self.page.valueForKey("words") 

aus Mein Fehler kommt versuchen, es als [Word] zu werfen:

for word in words!.allObjects as! [Word] { 

Welche zurück:

error: <EXPR>:1:24: error: 'Word' is ambiguous for type lookup in this context 
words!.allObjects as! [Word] 
         ^~~~ 
Swift.Word:2:18: note: found this candidate 
public typealias Word = Int 
       ^
found this candidate 

Meine Theorien

Ich bin nicht allzu vertraut mit Swift/xCode Fehler vor. Aber versucht es mir zu sagen, dass Word an anderer Stelle als Systemobjekt reserviert sein könnte und dass ich es nicht hätte benutzen sollen? Meine andere Theorie war, dass ich meine Entitäten vielleicht nicht richtig anschließe ... daher die Word = Int.

ist hier mein Wort:

enter image description here

Hier ist meine Seite:

enter image description here

Irgendwelche Ideen, was dieser Fehler sein könnte?

Antwort

1

Sie versuchen, ein Set in ein Array zu konvertieren, genauer gesagt NSSet bis Array. Außerdem benötigen Sie nicht die unsichere valueForKey, wenn Sie bereits ordnungsgemäß unterklassifiziert haben.

let words = page.words as Set<Word> 

Sie können aufzählen, dass die gleiche Art und Weise wie ein Array

for word in words { .... } 
+0

Ich dachte, 'page.words' hätte gearbeitet, aber es gibt:' Fehler: : 1: 1: Fehler: Wert vom Typ 'NSManagedObject' hat keine Member 'words'. Nur ein wilder Schuss hier, aber 'words! .allObjects als Set ' gibt auch '' Word 'ist mehrdeutig für die Typsuche in diesem Kontext' – Trip

+1

Das ist, weil Sie 'Seite' nicht auf' Seite' geworfen haben. – Mundi

+0

ah das war es. Vielen Dank. Dein Kommentar führte mich zu der Erkenntnis, dass ich die modelxcdID-Datei noch nie mit der Klasse verbunden habe. Vielen Dank! – Trip