我的应用程序有两个实体:
相关如下:
我已经有了创建Core Data信息的基本应用程序,可以在表视图中显示它。我很困惑在某些情况下该怎么做,比如重命名人。
假设A人有合同A而B人有B合同。如果我将A人重命名为C人,则自动将合同A分配给C人,因此A人没有任何合同,因此不再存在
我如何有效地实现这一目标?
在我的应用中,我在标签栏中有两个表视图控制器,第一个包含合同作为节标题,人物名称作为行文本标签。第二个选项卡不包含任何部分,而只包含人名行。
如果在第一个表格视图中,我在合同A下面有人员A,然后我进入并将人员A重命名为人员C,然后当detailViewController保存并且表格刷新时,我将看到合同A成功分配给人员C和人A被删除。
但是,如果我转到人员选项卡,我仍然会看到人员A,但我现在也会看到人员C.人员C,当我点击它时显示合同A,但是当我点击时人员A没有记录因此,应该删除。
有几点需要注意:
1)如果A人有其他合同,那么它当然不应该被删除。 2)我正在为人员和合同使用NSManagedObject子类 3)Contracts选项卡在NSFetchedResultsController中使用Contracts Entity,People选项卡在其NSFetchedResultsController中使用People Entity。 4)最初我的关系的两边都被设置为Nullify但是我在一边用Cascade尝试了这个,然后两边都有相同的结果。
我目前没有任何代码,因为我真的不确定如何解决这个特定的情况(请记住,其他一切在这一点上运作良好)。
答案 0 :(得分:1)
我不太确定我理解你想要完成什么,但是......
您所做的似乎不是“重命名”,而是“重新分配”合同给新用户。
这意味着,您正在创建“人员C”并为其指定“联系人A”。
我不确定您尝试实施的行为是什么。
如果你想要一个Person
但没有Contract
只是在视图控制器中不显示,
但是仍然存在于您的商店中,您将需要以下内容:
在“人员视图控制器”中,将此谓词用于fetched results controller:
NSPredicate* p = [NSPredicate predicateWithFormat:@"contracts.@count != 0"];
如果您想删除没有Person
的{{1}},则需要添加自定义逻辑。
这可能类似于:
Contract