2

我有一个由 NSFetchedResultsController 提供的 UITableViewController。从它,用户可以调用一个模态视图控制器,他或她可以在其中输入新数据。在此开始时,我创建一个临时对象,如下所示:

newPtr = [[Entry alloc] initWithEntity:[NSEntityDescription
entityForName:@"Entry" inManagedObjectContext:self.nmocontext]
insertIntoManagedObjectContext:self.nmocontext];

当用户做出选择时,这个“临时”对象的属性 newPtr 被设置。

问题是当模态 ViewController 可见时,基本 UITableViewController 仍然处于活动状态。在某些情况下,当它意识到尚未设置 newPtr 的强制属性时,它似乎吓坏了(导致崩溃)。

我能做些什么来阻止 NSFetchedResultsController 查看我的托管对象上下文,直到模式 ViewController 被解除?

4

2 回答 2

2

Core Data 支持“嵌套”的托管对象上下文,它允许灵活的架构,从而可以轻松支持独立的、可取消的变更集。使用子上下文,您可以允许用户对托管对象进行一组更改,然后这些更改可以作为单个事务批量提交给父对象(并最终保存到商店),也可以丢弃。如果应用程序的所有部分都简单地从应用程序委托中检索相同的上下文,那么它会使这种行为难以或不可能支持。

于 2016-10-17T00:22:37.077 回答
1

我自己没有对此进行测试,但一种可能的方法是实现viewWillAppearand viewWillDisappear,并将 fetchedResultsController 委托设置为selfon将出现并且nilon将消失

或者

您可以在编辑窗口中创建一个反映 NSManagedObject 属性的 NSObject。一旦用户完成了对属性的编辑(并且您已经运行了适当的验证规则),您可以将它们传递回您的 NSManagedObject 实例并让 fetchedResultsController 完成它的工作。

于 2010-12-12T07:19:52.937 回答