具有一对多关系的数据库应用程序具有杂散对象

时间:2014-08-15 14:54:34

标签: ios iphone database core-data one-to-many

我有一个entityA< - >> entityB的数据库应用程序。要加载数据,两个实体都有nstableviews。我的问题是我已经输入了适用于entityA的实体B的数据,但是当我将数据库加载到我的iphone应用程序中时,有几个实体B没有出现任何相关的实体A&# 39; S。我认为实体B已被添加而没有选择实体A,这可能就是他们“浮动”的原因。在iPhone应用程序。

一些问题: 有没有人经历过这个? 有没有办法在我的深入数据库应用程序中阻止这种情况? 有没有办法对其进行编码,以便任何实体B与实体A没有关系然后将其删除?

2 个答案:

答案 0 :(得分:0)

回答你的问题。

  

1。有没有人经历过这个?

当然,很多人都经历过这种情况。但是,如果你对你编写的代码小心,我应该不太可能。

  

2。有没有办法在我的深入数据库应用程序中阻止这种情况?

当然。只需确保有一个父实体,如果没有,则创建一个父实体。如果A实体存在,它只是一个单行。

newBEntity.a = existingAEntity;
  

3。有没有办法对它进行编码,以便任何entityB与entityA没有关系然后将其删除?

理论上,是的,但这将是糟糕的代码设计。只需使用上面2中的过程:创建B,如果没有A实体,则抛弃它(例如,通过在托管对象上下文中调用rollback)。或者,如建议的那样,创建一个新的A实体。

您还可以(定期或在应用启动和关闭时)迭代所有B实体并删除孤立的实体,但这将是非常糟糕的数据设计。

答案 1 :(得分:0)

确保您已为关系指定了反转,并正确删除了规则。

根据Apple文档,您应该为每个关系提供反向,即使您只打算在一个方向上使用它。如果不这样做,可能会导致模型完整性失败,就像您正在描述的那样。