J'ai un projet-cadre et d'obtenir cette erreur étrange lorsque je tente de tester l'unité mes cours. ici est le code proposé par Andrew Bancroft pour obtenir en mémoire NSManagedObjectContext
Swift 3 Core Data NSInternalInconsistencyException entityForName n'a pas pu localiser une entité nommée Foo dans ce modèle
func setUpInMemoryManagedObjectContext() -> NSManagedObjectContext {
let managedObjectModel = NSManagedObjectModel.mergedModel(from: [Bundle.main])!
let persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)
do {
try persistentStoreCoordinator.addPersistentStore(ofType: NSInMemoryStoreType, configurationName: nil, at: nil, options: nil)
} catch {
print("Adding in-memory persistent store failed")
}
let managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = persistentStoreCoordinator
return managedObjectContext
}
Mais chaque fois que je tente d'insérer un objet (ou toute autre opération db) par ce code
let newLocationMO = NSEntityDescription.insertNewObject(forEntityName: table, into: context) as! LocationMO
Il se bloque avec l'erreur mentionné dans Titre. J'ai aussi essayé de tester avec un contexte réel, donc j'importe mon framework dans un projet temporaire et récupère le contexte du code généré automatiquement par AppDelegate mais il se bloque avec la même erreur que s'il ne voit pas ma définition .xcdatamodeld
.
Note: J'ai vérifié toutes les fautes de frappe et qu'aucun fichier est manquant.
Peut-être il est interdit d'avoir des données de base dans le projet-cadre? Tout lien ou exemple d'utilisation de données de base dans un projet-cadre est très apprécié.
Merci pour la réponse, Tom semble qu'il résout le problème avec la création de contexte, mais maintenant il y a un autre problème. Il dit: CoreData: avertissement: Impossible de charger la classe nommée 'MyFramework.MyClass' pour l'entité 'MyClass'. Classe non trouvée, utilisant NSManagedObject par défaut. Impossible de convertir la valeur de type 'NSManagedObject_MyClass_' en 'MyFramework.MyClass' pour quelle raison? MyClass est généré automatiquement par la classe publique – Vilen
ok après de nombreuses tentatives de faire la même chose, c'est-à-dire supprimer le module xcdatamodeld puis recréer les classes qu'il a commencé à tester. mais ne peut toujours pas utiliser mon cadre à l'intérieur du projet réel ressemble à ne pas voir xcdatamodeld. – Vilen