核心数据中的主键位置
Posted
技术标签:
【中文标题】核心数据中的主键位置【英文标题】:Primary key position in core data 【发布时间】:2014-02-27 10:20:29 【问题描述】:在 CoreData 中,我了解到,
Core Data 有自己的主键——您不必添加主键。您可以使用检索它
NSManagedObjectID *moID = [managedObject objectID];
现在我的问题是,假设我有 3 个数据,如果我从主键位置 1 中删除某些内容并且我想添加一些新数据,它将添加到哪个位置?那个位置是主键 4 吗?如果我想在位置添加这个新数据 - 主键 1 我应该怎么做?
【问题讨论】:
【参考方案1】:托管对象 ID 不是数据的主键 - 它是 Core Data 内部使用的唯一引用,并在我们的应用程序中使用该 ID 来获取不同上下文中的对象。
从您的问题看来,您正在尝试在特定位置添加对象。这不是 objectID 的用途。如果您想按特定顺序保存事物,则需要添加用于排序的属性,或使用有序关系来为您处理。
【讨论】:
那么在属性中我怎样才能使某些属性比我怎么做呢?【参考方案2】:托管对象 ID 用于跨多个托管对象上下文唯一标识托管对象。它不能用于按特定顺序保存对象。
要使托管对象保持明确定义的顺序,您必须将自己的 key 属性添加到 实体,并在获取请求的排序描述符中使用它。
【讨论】:
好的,如果我想在coredata中使用pk,我必须为此添加自己的属性,我无法使用coredata生成的pk..对吗?因为我可以在命令行工具中看到由 coredata 生成的 sql db 中的一些主键。 @Jean-LucGodard:你是对的。 Core Data 框架不允许您访问用于 SQLite 存储的主键。 那么核心数据到底是什么?对苹果创建的 sqlite 进行操作的包装器?并且我无法进行包括主键,外键在内的此类操作,那么我必须为此使用自己的属性? @Jean-LucGodard:Core Data 是“具有生命周期、搜索和持久性功能的对象图管理器”,而不是数据库。请参阅cocoawithlove.com/2010/02/… 或***.com/questions/7373281/…。 - Core Data 不需要外键,而是定义“关系”。 那么在属性中我怎样才能使某些属性比我怎么做呢?以上是关于核心数据中的主键位置的主要内容,如果未能解决你的问题,请参考以下文章