Hallo zusammen,
in meinem App habe ich eine Statistik-Tabelle eingebaut, deren Daten ich während der Laufzeit an anderer Stelle ändere. Dies macht es erforderlich, dass ich bei einem erneuten Aufruf sämtliche Daten lösche und die Tabelle neu fülle, da sich in der Zwischenzeit Änderungen ergeben könnten.
Das funktioniert auch grundsätzlich. Allerdings habe ich eine Entität "StatSpielerHeim", die durch eine 1:n-Relationship mit der Entität "StatSpielerHeimDaten" verbunden ist.
Ich lösche sämtliche Instanzen von "StatSpielerHeim" mit folgendem Code:
Alles anzeigen
Beim ersten Durchlauf während einer Laufzeit funktioniert alles prima. Wenn ich den TableView dann allerdings nochmals aufrufe, stürzt das Programm ab.
Ich habe schon verschiedene Sachen ausprobiert und ich denke, das liegt am obigen Code. Wenn ich den nämlich auskommentiere, funktioniert es. Nur sind dann eben die Spielernamen nach jedem Aufruf doppelt, dreifach usw.
Ich nehme also an, dass nicht sauber gelöscht wird. Da es bei den anderen Entitäten, die keine 1:n-relationship haben, funktioniert, nehme ich an, dass dies der Grund für den Absturz ist.
Bei der Entität "StatSpielerHeim" habe ich übrigens Properties auf Optional, To-Many-Relationship aktiviert und die Delete Rule auf Cascade. Bei der Entität "StatSpielerHeimDaten" die Delete Rule auf Nullify.
Braucht ihr sonst noch Informationen?
Danke für eure Hilfe.
Viele Grüße
Lars
P.S.: Gibt es andere Möglichkeit, sämtliche Instanzen einer Entität zu löschen?
in meinem App habe ich eine Statistik-Tabelle eingebaut, deren Daten ich während der Laufzeit an anderer Stelle ändere. Dies macht es erforderlich, dass ich bei einem erneuten Aufruf sämtliche Daten lösche und die Tabelle neu fülle, da sich in der Zwischenzeit Änderungen ergeben könnten.
Das funktioniert auch grundsätzlich. Allerdings habe ich eine Entität "StatSpielerHeim", die durch eine 1:n-Relationship mit der Entität "StatSpielerHeimDaten" verbunden ist.
Ich lösche sämtliche Instanzen von "StatSpielerHeim" mit folgendem Code:
Quellcode
- NSManagedObjectContext *spielerHeimContext =
- [self.statSpielerHeimFetchedResultsController managedObjectContext];
- NSEntityDescription *spielerHeimEntity =
- [self.statSpielerHeimFetchedResultsController.fetchRequest entity];
- NSFetchRequest * allStatSpielerHeim = [[NSFetchRequest alloc] init];
- [allStatSpielerHeim setEntity:[NSEntityDescription entityForName:@"StatSpielerHeim" inManagedObjectContext:spielerHeimContext]];
- [allStatSpielerHeim setIncludesPropertyValues:NO];
- NSError * errorSpielerHeim = nil;
- NSArray * statSpielerHeim0 = [spielerHeimContext executeFetchRequest:allStatSpielerHeim error:&errorSpielerHeim];
- [allStatSpielerHeim release];
- //error handling goes here
- for (NSManagedObject * statSpielerHeim1 in statSpielerHeim0) {
- [spielerHeimContext deleteObject:statSpielerHeim1];
- }
Beim ersten Durchlauf während einer Laufzeit funktioniert alles prima. Wenn ich den TableView dann allerdings nochmals aufrufe, stürzt das Programm ab.
Ich habe schon verschiedene Sachen ausprobiert und ich denke, das liegt am obigen Code. Wenn ich den nämlich auskommentiere, funktioniert es. Nur sind dann eben die Spielernamen nach jedem Aufruf doppelt, dreifach usw.
Ich nehme also an, dass nicht sauber gelöscht wird. Da es bei den anderen Entitäten, die keine 1:n-relationship haben, funktioniert, nehme ich an, dass dies der Grund für den Absturz ist.
Bei der Entität "StatSpielerHeim" habe ich übrigens Properties auf Optional, To-Many-Relationship aktiviert und die Delete Rule auf Cascade. Bei der Entität "StatSpielerHeimDaten" die Delete Rule auf Nullify.
Braucht ihr sonst noch Informationen?
Danke für eure Hilfe.
Viele Grüße
Lars
P.S.: Gibt es andere Möglichkeit, sämtliche Instanzen einer Entität zu löschen?