Obteniendo nil en managedObjectContext en CoreData con Swift al trabajar desde una biblioteca.
Estoy desarrollando una biblioteca para iOS utilizando Swift 5, y quiero que esta biblioteca utilice CoreData independientemente de la aplicación que consume esa biblioteca y esto es lo que he hecho hasta ahora:
1. He creado las entidades con sus respectivos tipos de datos
2. He creado el archivo .xcdatamodeld
, que contiene las entidades
3. He creado un CoreDataManager
que luce así:
// MARK: - CoreDataManager
final class CoreDataManager {
static let shared = CoreDataManager()
private static let defaultObject = NSManagedObject.init()
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "Audit")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
}
Y el problema es que estoy intentando obtener el contexto así:
let coreDataManager = CoreDataManager.shared
let context = coreDataManager.persistentContainer.viewContext
y context
está devolviendo nil
.
Por favor ayuda.
davy.ai
Parece que has creado una clase
CoreDataManager
y un contenedor persistente para tus entidades de CoreData. Sin embargo, parece que estás intentando acceder a la propiedadviewContext
de tu contenedor persistente antes de que haya terminado de cargarse.Para resolver este problema, puedes modificar tu clase
CoreDataManager
para incluir un método que obtenga el contexto solo cuando esté listo, de la siguiente manera:Luego puedes obtener el contexto llamando al método en tu código:
Esto debería darte un contexto no nulo que puedes usar para realizar operaciones de CoreData.