tutorial existing español data swift core-data swift3

swift - existing - Datos básicos: Error al cargar el modelo



nsmanagedobject swift 4 (4)

Soy nuevo en los datos básicos.

Lo que estoy tratando de HACER: Estoy tratando de crear un marco de cocoatouch que tenga una aplicación para agregar detalles de los empleados y mostrarlos en una vista de tabla. Para que pueda agregar este marco a mi proyecto principal para trabajar de forma independiente.

Problemas a los que me enfrento: el trabajo del marco se construye sin error. He agregado la pila de datos básicos de swift 3 al marco. Pero cuando ejecuto el proyecto principal, en el momento en que el marco carga el registro, se muestra "No se pudo cargar el modelo llamado marco simple", "error de recuperación" y "el empleado debe tener una descripción de entidad válida". El código que he usado en el marco es como se muestra a continuación:

public class CoreDataStack { public static let sharedInstance = CoreDataStack() lazy var persistentContainer: NSPersistentContainer = { let container = NSPersistentContainer(name: "SimpleFramework") container.loadPersistentStores(completionHandler: { (storeDescription, error) in if let error = error { fatalError("Unresolved error /(error), /(error)") } }) return container }() public func saveContext() { let context = persistentContainer.viewContext if context.hasChanges { do { try context.save() } catch let error as NSError { fatalError("Unresolved error /(error), /(error.userInfo)") } } } } @IBAction func addEmployee(_ sender: Any) { //To save the data let context = CoreDataStack.sharedInstance.persistentContainer.viewContext let employee = Employee(context: context) employee.employeeName = nameTextField.text employee.employeeAge = Int16(ageTextField.text!)! employee.hasVehicle = hasVehicle.isOn CoreDataStack.sharedInstance.saveContext() navigationController!.popViewController(animated: true) } @IBAction func addEmployee(_ sender: Any) { //To save the data let context = CoreDataStack.sharedInstance.persistentContainer.viewContext let employee = Employee(context: context) employee.employeeName = nameTextField.text employee.employeeAge = Int16(ageTextField.text!)! employee.hasVehicle = hasVehicle.isOn CoreDataStack.sharedInstance.saveContext() navigationController!.popViewController(animated: true) }


En mi caso, por alguna razón, el DataModel.xcdatamodeld desapareció de mi área de trabajo del proyecto.

Primero intenté crear un nuevo DataModle.xcdatamodeld y recrear el modelo de datos, pero ocurrió el mismo error. Eso es cuando me di cuenta de que el Original DataModel.xcdatamodeld estaba en el directorio raíz. Arreglé esto simplemente haciendo clic derecho en mi proyecto en mi navegador de proyectos, y seleccionando "Add files to "Project"..." , luego agregué mi antiguo modelo de datos y eliminé mi nuevo modelo de datos. Finalmente limpié duro, ejecuté mi proyecto y solucioné el problema.


He tenido este problema, cuando tuve un nombre de modelo incorrecto: debería modelar el nombre, no los proyectos (vea la captura de pantalla)


La cadena que pasa al inicializador NSPersistentContainer:

NSPersistentContainer(name: "CoreData")

debe coincidir con el nombre del archivo del modelo de datos en su proyecto de Xcode:

CoreData.xcdatamodeld


Pase explícitamente el nombre del archivo de los modelos a la pila de Core Data para la inicialización y asegúrese de que esté cargado desde el paquete correcto en el momento (paquete de prueba, paquete de aplicación ...) usando Bundle(for: type(of: self)) :

//... let momdName = "SimpleFramework" //pass this as a parameter //... guard let modelURL = Bundle(for: type(of: self)).url(forResource: momdName, withExtension:"momd") else { fatalError("Error loading model from bundle") } guard let mom = NSManagedObjectModel(contentsOf: modelURL) else { fatalError("Error initializing mom from: /(modelURL)") } persistentContainer = NSPersistentContainer(name: momdName, managedObjectModel: mom) //...

Editar:

También asegúrese de que SimpleFramework.xcdatamodeld se agregue a la Target Membership utilizada: