Core Data speichert Daten beim ersten Start in der falschen Datenbank

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Core Data speichert Daten beim ersten Start in der falschen Datenbank

    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:

    Quellcode

    1. lazy var persistentContainer: NSPersistentContainer = {
    2. let container = NSPersistentContainer(name: "CoreData_App")
    3. let preloadDataStoreDescription = NSPersistentStoreDescription(url: FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("PreloadData.sqlite"))
    4. let userStoreDescription = NSPersistentStoreDescription(url: FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!.appendingPathComponent("UserData.sqlite"))
    5. userStoreDescription.configuration = "UserData"
    6. preloadDataStoreDescription.configuration = "PreloadData"
    7. container.persistentStoreDescriptions = [preloadDataStoreDescription, userStoreDescription]
    8. container.loadPersistentStores(completionHandler: { (storeDescription, error) in
    9. if let error = error as NSError? {
    10. fatalError("Unresolved error \(error), \(error.userInfo)")
    11. }
    12. })
    13. return container
    14. }()
    15. // MARK: - Core Data Saving support
    16. func saveContext () {
    17. let context = persistentContainer.viewContext
    18. if context.hasChanges {
    19. do {
    20. try context.save()
    21. } catch {
    22. let nserror = error as NSError
    23. fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
    24. }
    25. }
    26. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Butterkeks ()