【发布时间】:2012-03-19 18:01:52
【问题描述】:
我在我的 OS X 应用程序中使用 Core Data,我将一些 TableViews 绑定到 NSArrayControllers。我遇到的问题是,当我尝试使用数组控制器在工作表中填充表格视图时,我不希望内容持续存在。
以下是应用挂起的方式;
窗口 1 - 在表格视图中显示用户列表并允许添加和删除用户。内容通过核心数据绑定持久化。
窗口 2 - 在表格视图中显示组列表。第二个表格视图显示属于所选组的用户列表。内容通过核心数据绑定持久化。 “添加用户”按钮调用用于将用户添加到组的工作表。
添加用户表 - 此表显示尚未成为所选组成员的用户的表格视图。按下工作表上的关闭按钮会将选定的用户添加到选定的组中。
好的,所以我遇到的问题是添加用户表的数组控制器。当我调用工作表时,我会遍历所有用户并将任何用户添加到数组控制器中,如果它们在组中尚不存在。当我关闭工作表时,我尝试使用 removeObject 清除数组控制器:但这会导致“无法将此方法与 ModelObjectContect 一起使用。”
为什么我需要 MOC 才能从阵列控制器中移除项目?它仅用于显示目的,所以我不需要它持续存在。如果我将阵列控制器 MOC 设置为我的应用程序委托的,它会物理删除用户,这显然是我不想要的。我只想将它们从工作表的表格视图中删除。
我认为答案可能是创建另一个 MOC 用作便签本,而不是将其绑定到持久存储,但这只是在使用 removeObject: 时给了我一个不同的错误:,类似于“可以” t 移除存在于另一个 MOC 中的对象。”
为什么我可以将对象添加到数组控制器但不能删除它们?在您实际上不希望物理删除项目的情况下,您应该访问底层的“内容”,例如[阵列控制器内容]?我玩过这个但得到奇怪的显示结果,因为它似乎在玩它背后的阵列控制器的内容。如果我这样做,有没有办法告诉数组控制器“顺便说一句,我一直在修补你的内容,你可能需要振作起来”?
在我看来,您不应该在没有 Core Data 的情况下使用数组控制器,但是文档中有许多 cmets 表明它可以在有无核心数据的情况下使用。
【问题讨论】:
标签: objective-c core-data nsmanagedobjectcontext nsarraycontroller