具有独特约束和关系的核心数据-IOS

时间:2016-10-18 13:20:28

标签: ios sqlite core-data relationship unique-constraint

我有一个使用关系的多个表的核心数据设计。我的数据库是SQLite。对于更新,我从JSON导入数据并使用此方法:

[NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:context]. 

我在核心数据中添加了唯一约束。 如果我更新一个与另一个对象关系的实体,它将失去连接。

Ex:包含与“pet_id”的一对一关系的实体“person”。如果我更新“宠物”它会改变他的身份,“人”仍指向旧身份证,所以他们不再相关。 有没有办法避免这个问题?

1 个答案:

答案 0 :(得分:1)

我认为这在任何地方都没有记录。这就是发生的事情:

  • 您创建了一个新实例。您的约束意味着此实例与现有实例匹配。但是...
  • 您的新实例对此关系的值为零。所以...
  • 现有实例的关系值将替换为新的nil值。

要维护关系,您的新实例需要已具有该关系的正确值。您基本上要求约束匹配系统忽略新实例中关系值不同的事实,但接受其他属性的新值。

我认为你所期待的是完全合理但我对目前的实施不支持它并不感到惊讶。我建议向Apple提交有关此问题的错误,并调查基于非约束的方法以保持数据的唯一性。