So füllen Sie die Datenbank nur einmal aufIOS

Programmierung für iOS
Guest
 So füllen Sie die Datenbank nur einmal auf

Post by Guest »

Ich möchte die Datenbank des Benutzers vorab füllen, wenn die App zum ersten Mal verwendet wird. Das ist, was ich habe:

Code: Select all

func checkAndPopulateData(modelContext: ModelContext) {
let fetchRequest = FetchDescriptor()
let existingRecords = try? modelContext.fetch(fetchRequest)

if existingRecords?.isEmpty ?? true {
populatePredefinedData(modelContext: modelContext)
}
}
in der App aufgerufen:

Code: Select all

init() {
checkAndPopulateData(modelContext: sharedModelContainer.mainContext)
}
Es funktioniert, außer wenn die App gelöscht und neu installiert wird. In diesem Fall gibt die Abrufanforderung nichts zurück, sodass die Elemente eingefügt werden können, und sie wird dann mit der App synchronisiert Cloud, was zu Duplikaten führt. Jedes Mal, wenn die App gelöscht und erneut installiert wird, werden neue Elemente angezeigt.
Wie kann man das verhindern? Ich habe versucht, den Elementen eindeutige Attribute hinzuzufügen, aber das wird nicht unterstützt. Ich würde es sowieso vorziehen, keine Uniques zu verwenden, um dieses Problem zu lösen, da ich keine Fehler auslösen möchte. Gibt es eine Möglichkeit zu warten, bis die CloudKit-Synchronisierung abgeschlossen ist, oder eine andere Lösung?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post