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

Core data with unique constraints and relationships-IOS

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

[NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:context]. 

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

Ex:实体 "person" 包含与 "pet_id" 的一对一关系。如果我更新 "pet" 它会改变他的 id 而 "person" 仍然指向旧的 id,所以它们不再相关。 有没有办法避免这个问题?

我认为这在任何地方都没有记录。这听起来像是正在发生的事情:

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

要维持这种关系,您的新实例需要已经具有该关系的正确值。您实质上是在要求约束匹配系统忽略新实例中关系值不同的事实,但接受其他属性的新值。

我认为您的期望是完全合理,但我对当前实施不支持它并不感到惊讶。我建议就此向 Apple 提交错误,并研究基于非约束的方法来保持数据的唯一性。