executeFetchRequest arroja un error fatal: el elemento NSArray no pudo coincidir con el tipo de elemento Swift Array

Estoy probando swift con CoreData y creé el siguiente código:

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)")

    }

}

Cuando corro:

Contact.execute()

Entonces el compilador arroja este error:

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

cuando trato de obtener valores de la matriz:

 let firstContact = result[0] as Contact

Supongo que el problema está enexecuteFetchRequest. EnC objetivo el tipo de retorno deexecuteFetchRequest es unNSArray. Ahora enRápido el tipo de retorno es un[AnyObject]?.

Traté de lanzar el[AnyObject]? resultado deNSArray, pero Xcode dijo:

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

¿Qué estoy haciendo mal?

Estoy usando: Xcode 6.0 (6A313) GM y OSX 10.9.4

Actualizar:
-----------

Si me daexecuteFetchRequest resultado como una matriz opcional y uso[NSManagedObject] en lugar de[Contact] funciona.

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)")
    }

Actualización2:
-----------

Este tipo de problema ocurre cuando las instancias de entidad no se cargaron usando su clase NSManagedObject. Hay algunas razones diferentes por las que sucede eso, todas las cuales se centran en "Core Data no pudo encontrar la clase que especificó para esa entidad en la línea de clase en el modelo de datos".

Entre las posibilidades:
- Especificó el paquete incorrecto para su clase Swift
- Olvidaste especificar la clase
- Escribiste mal el nombre

En mi caso, olvidé especificar la clase como muestra POB en su respuesta.

Respuestas a la pregunta(5)

Su respuesta a la pregunta