我创建了一个临时 NSManagedObject 并将其与主 NSManagedObjectContext 关联。我需要能够在上下文中将其视为功能齐全的对象(执行获取请求等),因此在没有关联上下文的情况下无法创建它。我在 ViewWillDisappear 中包含删除托管对象的逻辑,条件是新的视图控制器不只是被推入堆栈:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSArray *viewControllers = self.navigationController.viewControllers;
if (viewControllers.count > 1 && [viewControllers objectAtIndex:viewControllers.count-2] == self) {
// View is disappearing because a new view controller was pushed onto the stack
} else {
// View is disappearing for some other reason
[self.community.managedObjectContext deleteObject:self.community];
}
}
除了应用程序退出之外,这似乎在所有情况下都能正确删除托管对象。我尝试删除 viewDidUnload 中的对象,但似乎在应用程序退出时未调用该方法。我考虑过创建第二个托管对象上下文,但希望尽可能避免主要开销。
谢谢,格雷厄姆