如何暂停NSFetchedResultsController的工作?

时间:2010-12-12 05:05:52

标签: core-data ios4 nsfetchedresultscontroller modalviewcontroller

我有一个由NSFetchedResultsController提供的UITableViewController。从中,用户可以调用一个模态ViewController,他或她可以在其中输入新数据。当这开始时,我创建一个临时对象如下:

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

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

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

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

2 个答案:

答案 0 :(得分:1)

我自己没有对此进行测试,但可能的方法是实现viewWillAppearviewWillDisappear,并将上的fetchedResultsController委托设置为self 上的nil将消失

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

答案 1 :(得分:0)

Core Data支持“嵌套”托管对象上下文,它允许灵活的体系结构,以便轻松支持独立的,可取消的更改集。使用子上下文,您可以允许用户对托管对象进行一组更改,然后可以将这些更改作为单个事务批量提交给父级(最终保存到存储),或者丢弃。如果应用程序的所有部分只是从应用程序委托中检索相同的上下文,则会使此行为难以或无法支持。