该应用程序允许管理供应商列表和这些供应商提供的产品列表。数据模型包含2个实体:供应商和产品。
供应商与产品具有1对多的关系,删除规则设置为Cascade(因为我不想保留供应商产品停止运营的记录)。产品具有默认关系设置。
在IB中,我有2个阵列控制器。一个指向Supplier实体,参数:MOC绑定到AppDelegate,MKP绑定到managedObjectContext。另一个指向Product实体,参数:MOC绑定到AppDelegate和MKP = managedObjectContext,控制器内容:内容集绑定到Suppliers数组控制器,CK =选择和MKP = name_of_relation。
在界面上,我有2个供应商和产品的NSTableViews,以及从表中添加/删除的按钮。当我选择供应商时,只有其特定产品显示在产品表中。当我删除产品时,产品会从表中消失。它按预期工作。
我认为它工作正常,直到我好奇地看到CoreData如何实际管理SQLite数据库中的数据字段和表。所以我在Firefox中使用SQLiteManager附加组件打开它......恐怖!我看到产品未被删除。数据还在那里!只删除了对供应商的引用,这就是为什么它不再出现在表中,导致我认为它已被正确删除。
我做错了什么?它是内容集绑定的东西吗? 谢谢你的建议。
答案 0 :(得分:1)
我刚刚对此进行了测试,结果是关系实体完全从sqlite数据库中删除了。我认为您需要在IB中再次检查您的级联设置。您确定有save:
声明吗?