当对象的上下文不同时,如何制作 NSManagedObject 的浅拷贝?
Posted
技术标签:
【中文标题】当对象的上下文不同时,如何制作 NSManagedObject 的浅拷贝?【英文标题】:How to make a shallow copy of NSManagedObject when objects' contexts differ? 【发布时间】:2011-08-08 05:55:45 【问题描述】:我正在我的 ios 应用程序中实现“复制”功能。我正在使用以下工作流程:
-
在根视图控制器的初始上下文中显示托管对象列表
当用户点击一行时,创建一个新的上下文,将其传递给具有重复托管对象的“详细”视图控制器 (
[[DetailController alloc] initWithObject:clonedObject inContext:newContext]
)。
但是,由于它们的托管对象上下文不同,我正在努力解决从源对象重新分配关系到克隆对象的概念。什么是正确的方法:
-
我是不是应该只重新分配指针值而不关心 MOC 或...
我应该根据它们的唯一标识符重新获取新上下文中的值吗?
还有其他我没有想到的选择吗?
附:上下文使用相同的持久存储协调器。
【问题讨论】:
【参考方案1】:托管对象 ID 是线程安全的。因此,您可以将托管对象 ID 传递给视图控制器中的 MOC,通过 existingObjectWithID:error 检索该对象,然后在该上下文中执行复制。这样,对象永远不会跨越 MOC 边界。
【讨论】:
有什么特殊原因不给用户objectWithID:
?
ObjectWithID 始终返回一个对象,即使该对象是错误的。见cocoawithlove.com/2008/08/…以上是关于当对象的上下文不同时,如何制作 NSManagedObject 的浅拷贝?的主要内容,如果未能解决你的问题,请参考以下文章
NSManaged Object Context 无法删除对象
如何使用 @selector 和 NSInvocation 从另一个对象调用 NSManaged 对象的 @dynamic 方法?
如何将@NSManaged 对象类中的变量初始化为 JSON 值?