管理核心数据中的复合主键

时间:2015-10-28 16:27:52

标签: ios core-data unique

我想在核心数据中创建复合唯一键,因为核心数据中的实际主键是ObjectId。请让我知道,我们怎么能实现同样的目标。

更新了问题:

我正在使用一个作为模板的实体。并且正在使用特定组合在服务器上创建该模板。

Like Entity Name : E
and there are 4 attributes A, B, C, D.

现在,该实体具有以下组合的唯一性

A1-B1-C1-D1
A1-B2-C1-D1
....

实际上,它是多个属性的排列组合,以创建唯一性。

现在我想在更新记录时检测这些唯一性。

1 个答案:

答案 0 :(得分:0)

ObjectID是 NOT 主键。核心数据中没有主键。

核心数据数据库。像设计中的数据库一样处理它会导致问题。核心数据是可以持久存储到磁盘的对象图, 可以持久存在的格式的 是数据库。首先将其视为对象图。

在iOS 9和OS X 10.11中添加了具有唯一ID以进行重复检测的功能。查看2015年的WWDC视频,了解这些变化。

更新

即使在您更新后,我的答案仍然准确无误。在iOS 9中,他们添加了跨属性定义唯一ID的功能,这将有助于更新/插入问题。观看2015 WWDC视频,了解有关此功能的详细信息。

如果你的目标是比iOS 9更早的东西,那么,没有; Core Data中没有为您解决此问题的功能,您需要自己解决。这是经典"插入与更新"的一部分。所有持久层都面临的问题。

解决方案是创建一个ID列表,然后获取具有这些标识符的所有对象,然后迭代您正在处理的内容,并使用获取的列表来确定您是否需要插入。

更新到iOS 9并使用新API更容易。