管理 Core Data 中的复合主键
Manage Compound Primary Key in Core Data
我想在核心数据中创建复合唯一键,因为核心数据中的实际主键是 ObjectId。请让我知道,我们怎样才能达到同样的效果。
更新问题:
我有一个用作模板的实体。该模板正在使用特定组合在服务器上创建。
Like Entity Name : E
and there are 4 attributes A, B, C, D.
现在实体是唯一的,具有以下组合
A1-B1-C1-D1
A1-B2-C1-D1
....
所以其实就是多个属性的排列组合来创造唯一性
现在我想在更新记录时检测这些唯一性。
ObjectID 不是 主键。 Core Data 中没有主键。
核心数据不是数据库。在您的设计中将其视为数据库会导致问题。 Core Data 是一个对象图,可以 保存到磁盘,一种 它可以 保存的格式to 是一个数据库。首先将其视为对象图。
在 iOS 9 和 OS X 10.11 中添加了具有重复检测唯一 ID 的功能。查看 2015 年的 WWDC 视频以了解这些变化。
更新
即使在您更新后我的回答仍然准确。在 iOS 9 中,他们添加了跨属性定义唯一 ID 的功能,这将有助于解决 update/insert 问题。有关此功能的详细信息,请观看 2015 WWDC 视频。
如果你的目标是 iOS 9 岁以上的东西,那么,不; Core Data 中没有任何功能可以为您解决这个问题,您需要自己解决。这是所有持久层都面临的经典 "insert vs. update" 问题的一部分。
解决方案是创建一个 ID 列表,然后获取所有具有这些标识符的对象,然后迭代您正在处理的内容,并使用获取的列表来确定您是否需要插入。
更新到 iOS 9 并使用新的 API 更容易。
我想在核心数据中创建复合唯一键,因为核心数据中的实际主键是 ObjectId。请让我知道,我们怎样才能达到同样的效果。
更新问题:
我有一个用作模板的实体。该模板正在使用特定组合在服务器上创建。
Like Entity Name : E
and there are 4 attributes A, B, C, D.
现在实体是唯一的,具有以下组合
A1-B1-C1-D1
A1-B2-C1-D1
....
所以其实就是多个属性的排列组合来创造唯一性
现在我想在更新记录时检测这些唯一性。
ObjectID 不是 主键。 Core Data 中没有主键。
核心数据不是数据库。在您的设计中将其视为数据库会导致问题。 Core Data 是一个对象图,可以 保存到磁盘,一种 它可以 保存的格式to 是一个数据库。首先将其视为对象图。
在 iOS 9 和 OS X 10.11 中添加了具有重复检测唯一 ID 的功能。查看 2015 年的 WWDC 视频以了解这些变化。
更新
即使在您更新后我的回答仍然准确。在 iOS 9 中,他们添加了跨属性定义唯一 ID 的功能,这将有助于解决 update/insert 问题。有关此功能的详细信息,请观看 2015 WWDC 视频。
如果你的目标是 iOS 9 岁以上的东西,那么,不; Core Data 中没有任何功能可以为您解决这个问题,您需要自己解决。这是所有持久层都面临的经典 "insert vs. update" 问题的一部分。
解决方案是创建一个 ID 列表,然后获取所有具有这些标识符的对象,然后迭代您正在处理的内容,并使用获取的列表来确定您是否需要插入。
更新到 iOS 9 并使用新的 API 更容易。