executeFetchRequest Schwerwiegender Fehler: NSArray-Element konnte nicht mit dem Swift Array-Elementtyp übereinstimmen

Ich teste schnell mit CoreData und habe den folgenden Code erstellt:

import UIKit
import CoreData

class Contact: NSManagedObject {

    @NSManaged var name: String
    @NSManaged var email: String

    class func execute(){
        let appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
        let context:NSManagedObjectContext = appDel.managedObjectContext!

        let entityDescripition = NSEntityDescription.entityForName("Contact", inManagedObjectContext: context)
        let contact = Contact(entity: entityDescripition!, insertIntoManagedObjectContext: context)

        contact.name = "john Apleesee"
        contact.email = "[email protected]"

        context.save(nil)

        let fetch:NSFetchRequest = NSFetchRequest(entityName: "Contact")
        var result = context.executeFetchRequest(fetch, error: nil) as [Contact]

        let firstContact = result[0] as Contact  //  <<-- error !

        println("\(firstContact.name)")
        println("\(firstContact.email)")

    }

}

Wenn ich laufe:

Contact.execute()

Dann wirft der Compiler diesen Fehler:

fatal error: NSArray element failed to match the Swift Array Element type

wenn ich versuche, Werte aus dem Array abzurufen:

 let firstContact = result[0] as Contact

Ich denke, das Problem liegt inexecuteFetchRequest. AufZiel der Rückgabetyp vonexecuteFetchRequest ist einNSArray. Jetzt aufSchnel der Rückgabetyp ist ein[AnyObject]?.

Ich habe versucht, das @ zu besetz[AnyObject]? Ergebnis zuNSArray, aber Xcode sagte:

 Cannot convert the expression's type '[AnyObject]?' to type 'NSArray' 

Was mache ich falsch?

Ich verwende: Xcode 6.0 (6A313) GM und OSX 10.9.4

Aktualisieren
-----------

Wenn ich @ bekomexecuteFetchRequest result als optionales Array und benutze[NSManagedObject] anstatt[Contact] Es klappt

if let result: [NSManagedObject]? = context.executeFetchRequest(fetch, error: nil) as? [NSManagedObject] {

        let firstContact: NSManagedObject = result![0]

        let name = firstContact.valueForKey("name") as String
        let email = firstContact.valueForKey("email") as String

        println("\(name)")
        println("\(email)")
    }

Update2:
-----------

Diese Art von Problem tritt auf, wenn Entitätsinstanzen nicht mit Ihrer NSManagedObject-Klasse geladen wurden. Es gibt verschiedene Gründe, warum dies so ist. Im Fokus steht "Core Data konnte die Klasse, die Sie für diese Entität in der Klassenzeile im Datenmodell angegeben haben, nicht finden."

Unter den Möglichkeiten:
- Sie haben das falsche Paket für Ihre Swift-Klasse angegeben
- Sie haben vergessen, die Klasse @ anzugeb
- Sie haben den Namen @ falsch geschrieb

In meinem Fall habe ich vergessen, die Klasse anzugeben, wie POB in ihrer Antwort zeigt.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage