【发布时间】:2013-06-14 02:19:02
【问题描述】:
我不确定这个问题的格式是否适合这个网站。
基本上,有谁知道是什么说服了 Apple 做出设计决定,即每当您将数据保存到持久存储时 NSManagedObjectID 都会发生变化?
我可能错了,但这个决定对我来说听起来很可疑。 没有明显的优势(它是一个 UUID!它是唯一的!),但它使传递 objectID 的 --- 它可以在保存对象时随时更改。
这对我来说是个大问题,因为我使用三个 MOC 系统(背景 MOC -> UI MOC -> Persistent MOC),对象被插入到背景 MOC 中并通过保存向上传播。保存是异步的,因为它必须在三个不同的 MOC 上传播并在创建后返回对象,但在将它们保存到持久存储之前非常痛苦,因为我不能依赖传递 objectID。
我做错了什么吗?有谁知道 UUID 在没有通知的情况下随时可变的优势是什么?
我最大的问题是为什么要提供临时 managedObjectID。这有什么意义吗?只是为了迷惑人们尝试使用它吗?
【问题讨论】:
-
@samson 我在谷歌搜索解决方案时看到了这个问题。我不确定它和我的有什么共同点——你能详细说明一下吗?在那个问题中,brianpartridge 询问为什么他不能将
NSManagedObjectID存储在单独的持久存储中,而我的问题是询问为什么它会在应用程序的单个生命周期中发生变异 -
@che 我会说没有欺骗 - 这与潜在的欺骗没有太多共同之处。
-
@Undo:感谢语法修复。
-
@DanShelly,我可以,但我觉得这种方法很混乱。如果您有 MOC 的层次结构,每个都在自己的队列上运行,并且您从最低的一个调用
obtainPermanent,请考虑这种情况。发生什么了?它是如何通过你的层次结构传播的?哪些 MOC 被阻止,哪些没有?它如何在不实际写入的情况下保留空间?只有苹果知道。