Ich hab ein ziemlich merkwürdiges Verhalten in meiner Core Data App.
Zur Situation: Ich habe eine App mit einem Datamodel, welches zwei Configuartions besitzt. Einmal "PreloadData" und einmal "UserData", beide haben eine eigene Datenbank im Documents Verzeichnis. Die SQLite Datenbank für "PreloadData" wird hierbei beim ersten Start der App in den Documents Folder kopiert und die "UserData" SQLite Datenbank wird von CoreData erstellt.
Das ganze klappt soweit auch ohne Probleme.
Nun ist jedoch das für mich wirklich merkwürdige Verhalten das er beim ersten Start der App ALLE Daten nur aus der PreloadData Datenbank liest und auch ALLE Daten nur dort speichert.
Ab dem zweiten Start der App trennt er dann korrekt zwischen PreloadData und UserData, was dazu führt, das alle Daten die der User beim ersten Start erstellt hat weg sind. Das ist von mir natürlich nicht so gewünscht und ich verstehe leider absolut nicht warum er das richtige Verhalten nicht auch beim ersten Appstart hat.
Mein Core Data Stack sieht wie folgt aus:
Alles anzeigen
Zur Situation: Ich habe eine App mit einem Datamodel, welches zwei Configuartions besitzt. Einmal "PreloadData" und einmal "UserData", beide haben eine eigene Datenbank im Documents Verzeichnis. Die SQLite Datenbank für "PreloadData" wird hierbei beim ersten Start der App in den Documents Folder kopiert und die "UserData" SQLite Datenbank wird von CoreData erstellt.
Das ganze klappt soweit auch ohne Probleme.
Nun ist jedoch das für mich wirklich merkwürdige Verhalten das er beim ersten Start der App ALLE Daten nur aus der PreloadData Datenbank liest und auch ALLE Daten nur dort speichert.
Ab dem zweiten Start der App trennt er dann korrekt zwischen PreloadData und UserData, was dazu führt, das alle Daten die der User beim ersten Start erstellt hat weg sind. Das ist von mir natürlich nicht so gewünscht und ich verstehe leider absolut nicht warum er das richtige Verhalten nicht auch beim ersten Appstart hat.
Mein Core Data Stack sieht wie folgt aus:
Quellcode
- lazy var persistentContainer: NSPersistentContainer = {
- let container = NSPersistentContainer(name: "CoreData_App")
- let preloadDataStoreDescription = NSPersistentStoreDescription(url: FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("PreloadData.sqlite"))
- let userStoreDescription = NSPersistentStoreDescription(url: FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!.appendingPathComponent("UserData.sqlite"))
- userStoreDescription.configuration = "UserData"
- preloadDataStoreDescription.configuration = "PreloadData"
- container.persistentStoreDescriptions = [preloadDataStoreDescription, userStoreDescription]
- container.loadPersistentStores(completionHandler: { (storeDescription, error) in
- if let error = error as NSError? {
- fatalError("Unresolved error \(error), \(error.userInfo)")
- }
- })
- return container
- }()
- // MARK: - Core Data Saving support
- func saveContext () {
- let context = persistentContainer.viewContext
- if context.hasChanges {
- do {
- try context.save()
- } catch {
- let nserror = error as NSError
- fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
- }
- }
- }
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Butterkeks ()