Я использую базу данных CoreData в своем приложении.Мне нужно удалить его (модель и все данные) и воссоздать его при обновлении приложения.
Чтобы удалить его, я использую функцию destroyPersistentStore
.Но после удаления мне нужно заново создать persistentStores
, чтобы заполнить его новыми данными.
Здесь мой класс CoreDataManager
:
class CoreDataManager {
static let sharedManager = CoreDataManager()
private init() {}
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: storeName)
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
func resetCoreData(){
guard let firstStoreURL = self.persistentContainer.persistentStoreCoordinator.persistentStores.first?.url else {
print("Missing first store URL - could not destroy")
return
}
do {
try self.persistentContainer.persistentStoreCoordinator.destroyPersistentStore(at: firstStoreURL, ofType: NSSQLiteStoreType, options: nil)
} catch {
print("Unable to destroy persistent store: \(error) - \(error.localizedDescription)")
}
}
func recreateCoreData() {
do {
try self.persistentContainer.persistentStoreCoordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: storeName, at: firstStoreURL, options: nil)
} catch {
print("Unable to create persistent store: \(error) - \(error.localizedDescription)")
}
}
}
У меня ошибка с моим recreateCoreData
вызов, потому что хранилище несовместимо с тем, которое использовалось при его создании.
Что не так?
РЕДАКТИРОВАТЬ:
Модель базы данных не менялась между двумя версиями.
Ошибка:
Error Domain=NSCocoaErrorDomain Code=134020 "The model configuration used to open the store is incompatible with the one that was used to create the store."