by Guest » 20 Jan 2025, 14:07
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?
Ich möchte die Datenbank des Benutzers vorab füllen, wenn die App zum ersten Mal verwendet wird. Das ist, was ich habe:
[code]func checkAndPopulateData(modelContext: ModelContext) {
let fetchRequest = FetchDescriptor()
let existingRecords = try? modelContext.fetch(fetchRequest)
if existingRecords?.isEmpty ?? true {
populatePredefinedData(modelContext: modelContext)
}
}
[/code]
in der App aufgerufen:
[code]init() {
checkAndPopulateData(modelContext: sharedModelContainer.mainContext)
}
[/code]
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?