2016-04-18 3 views
30

Ich erstelle eine kleine App, um die vielen zu vielen Beziehungen in CoreData zu lernen. Jedoch mit dem Code unten ich einen Fehler Gießen von meinem NSFetchResult meiner Entity-Klasse (‚Groepering‘) erhalten:Umwandlung von 'NSPersistentStoreResult' in nicht verwandten Typ 'Entity' schlägt immer fehl

enter image description here

ich keinen Unterschied aus Proben sehe ich im Internet im Vergleich zu meinem Projekt gefunden, Warum versagt die Besetzung noch?

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
let managedContext = appDelegate.managedObjectContext 

let fetchRequest : NSFetchRequest = NSFetchRequest(entityName: "Entity") 

    do { 
     let fetchResults = try managedContext.executeRequest(fetchRequest) 
     let groeperingen = fetchResults as! [Entity] 
     // Here I get the Error:^

    } catch { 
     print("Error") 
} 
+4

Es ist nur ein Tippfehler: 'managedContext.executeFetchRequest (fetchRequest)' – vadian

Antwort

77

Verwendung executeFetchRequest Methode NSManagedObjectContext wenn eine NSFetchRequest durchführt.

bearbeiten Swift 3: Für Swift 3 verwenden:

let result = try managedContext.fetch(fetchRequest) 
+0

Danke! Nachdem ich es tausendmal gelesen hatte, schaute ich immer noch darüber und las es richtig in meinem Kopf. – Emptyless

+2

In Swift 3 wurde dieser Befehl in 'NSManagedObjectContext.fetch (NSFetchRequest >) geändert. [Link zu Apple-Dokumenten] (https://developer.apple.com/reference/coredata/nsmanagedobjectcontext/1506672-fetch) – Peter

+0

Ich rief 'let result = versuchen Sie ManagedContext.execute (fetchRequest)' und verbringen Sie einige Stunden, um falsche Methode zu finden Tippfehler –

14

I umgewandelt vor kurzem meinen Code Swift 3 und lief in dieser gleichen Fehler, wenn auch nicht wegen eines Tippfehler. Es scheint, dass der neue, äquivalente Funktionsaufruf let fetchResults = try managedContext.fetch(fetchRequest) ist.

+3

Wie werden Sie in Ihr NSmanagedObject umgewandelt? –

+2

Dies funktionierte für mich in Swift 3. Es gibt auch eine managedObjectContext.execute (request) -Methode, die aber die gleichen Probleme wie oben erzeugt. – josephap

+1

@PabloMartinez Ich werfe die Ergebnisse mit 'let fetchResults = versuche ManagedContext.fetch (fetchRequest) als! [MySubclass] '. – blwinters

Verwandte Themen