Ich erstelle ein temporäres NSManagedObject und verknüpfe es mit dem Haupt-NSManagedObjectContext. Ich muss es als voll funktionsfähiges Objekt behandeln können (Fetch-Anfragen durchführen usw.) innerhalb des Kontexts und daher kann ich es nicht ohne zugehörigen Kontext erstellen. Ich füge eine Logik ein, um das verwaltete Objekt in ViewWillDisappear zu löschen unter der Bedingung, dass nicht gerade ein neuer Ansichtscontroller auf den Stapel geschoben wurde:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSArray *viewControllers = self.navigationController.viewControllers;
if (viewControllers.count > 1 && [viewControllers objectAtIndex:viewControllers.count-2] == self) {
// Ansicht verschwindet, weil ein neuer Ansichtscontroller auf den Stapel geschoben wurde
} else {
// Ansicht verschwindet aus einem anderen Grund
[self.community.managedObjectContext deleteObject:self.community];
}
}
Dies scheint das verwaltete Objekt in allen Fällen ordnungsgemäß zu löschen, außer wenn die Anwendung beendet wird. Ich habe versucht, das Objekt in viewDidUnload zu löschen, aber anscheinend wird die Methode nicht aufgerufen, wenn die Anwendung beendet wird. Ich habe darüber nachgedacht, einen zweiten verwalteten Objektkontext zu erstellen, möchte aber den großen Overhead wenn möglich vermeiden.
Danke, Graham