核心数据对象id格式
Posted
技术标签:
【中文标题】核心数据对象id格式【英文标题】:Core data object id format 【发布时间】:2018-12-13 09:59:46 【问题描述】:我有这些通过在不同上下文中获取相同对象而获得的永久对象 ID:
<x-coredata://F1697911-CD8A-4D63-B40F-AB0CA020C873/Facility/p1>
<x-coredata://F1697911-CD8A-4D63-B40F-AB0CA020C873/Facility/p2>
GUID 部分 F1697911-CD8A-4D63-B40F-AB0CA020C873
相同。
实体部分是一样的。
什么是p1
和p2
,它们为什么不同?
我的期望是它们代表的对象应该是相同的。我在不同的托管对象上下文中使用它们,但据我了解,对象 id 应该是相同的。
谢谢。
【问题讨论】:
好资源***.com/a/12218565/429763 这个字符串只是描述了控制台中某些对象的注销吗? 是的,只有控制台上的打印输出。但请注意 p1 与 p2 如果这只是因为您有兴趣了解它的工作原理,那很好。如果您正在编写(或计划编写)依赖于这种格式的代码,那么您几乎肯定会使 Core Data 变得比它需要的更复杂,或者做出了无效的假设。 【参考方案1】:p 将 objectID 标识为持久的,与它的 MOC 相关联。它是整个 URI 的一部分。
临时 URI 看起来不同,例如:
x-coredata:///Facility/tF1697911-CD8A-4D63-B40F-AB0CA020C873
注意 objectID 前面的“t”。
CoreData 的 url 方案就是这样工作的。
您有 2 个永久唯一 ID 来区分对象引用。
【讨论】:
好的。那么我可以假设两者不相同?我有嵌套的上下文,我希望它们是平等的,但似乎它们毕竟是不同的。简而言之,p1
和 p2
使它们不同,因为 px
是对象 ID 的一部分。
它使它们在整个应用程序的所有上下文中都是独一无二的。需要有一些独特性才能知道如何应用发生在另一个上下文中的更改。由于每个 managedObject 都有其关联的上下文,因此您可以对这个 URI 进行某种程度的全局引用。否则,在不知道使用哪个 MOC 的情况下无法区分对象。以上是关于核心数据对象id格式的主要内容,如果未能解决你的问题,请参考以下文章