核心数据、托管对象和多个表视图控制器

Posted

技术标签:

【中文标题】核心数据、托管对象和多个表视图控制器【英文标题】:Core data, managed objects and multiple table view controllers 【发布时间】:2010-08-19 14:13:38 【问题描述】:

我有一个带有两个标签的UITabBarController。每个选项卡都有一个UINavigationController,每个UINavigationController 都有一个表格视图。第一个选项卡可让您查看和编辑所有员工的列表。第二个选项卡可让您查看员工的子集。

我的问题是,在第一个选项卡中,您可以从核心数据中删除员工。但是,当您返回到第二个选项卡时,它会崩溃,因为它仍然有一个指向已删除员工的指针。

是否有一种简单的方法可以检查 nsmanaged 对象是否已被删除,或者是否有方法通知或侦听删除?

【问题讨论】:

【参考方案1】:

注册NSManagedObjectContext NSManagedObjectContextDidSaveNotification 致电NSFetchedResultsController mergeChangesFromContextDidSaveNotification:

查看Core Data Books 示例代码。

【讨论】:

【参考方案2】:

如果您在每个表视图上使用 NSFetchedResultsController 实例,那么您只需要在第一个选项卡中执行保存并在第二个选项卡上响应委托方法。

如果您没有使用NSFetchedResultsController,那么您应该在显示数据表时使用。

【讨论】:

以上是关于核心数据、托管对象和多个表视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

ios核心数据回滚

我需要多个上下文来更新独立对象吗?

共享托管对象上下文

核心数据 - 管理上下文

从视图控制器传递后传递的托管对象上下文为空

OS X Core Data - 将托管对象上下文传递给视图控制器