如何在 Core Data 中制作 NSManagedObject 的深拷贝
Posted
技术标签:
【中文标题】如何在 Core Data 中制作 NSManagedObject 的深拷贝【英文标题】:How to make Deep Copy of NSManagedObject in Core Data 【发布时间】:2010-09-26 22:00:56 【问题描述】:我正在尝试复制现有的 NSManagedObject 和 Core Data 中的相关子对象。我似乎找不到一个简单的方法来做到这一点。
我有一个从核心数据数据库填充的 NSArrayController。我想在 selectionIndex 处获取对象并进行深层复制,使其与同一个父对象保持关联并复制所有子对象。
感谢任何帮助!
感谢 TechZen 提供链接。我使用了该站点的示例代码并使用了这个调用代码:
RuleSetVersion *object = [[ruleSetVersionArrayController selectedObjects] lastObject];
NSString *parentEntity = @"RuleSet";
RuleSetVersion *newObject = (RuleSetVersion*)[self copyObject:object toContext:[self managedObjectContext] parent:parentEntity];
[newObject setRuleSetEffectiveDate:[[NSDate alloc] init]];
[newObject setRuleSetVersionLastModifiedDate:[[NSDate alloc] init]];
[newObject setRuleSet:object.ruleSet];
NSError *error;
if ([managedObjectContext save:&error] == NO)
[NSApp presentError:error];
【问题讨论】:
【参考方案1】:它相当复杂。请参阅此答案及其链接的示例代码:
How do I copy or move an NSManagedObject from one context to another?
【讨论】:
感谢您的回复!我看到了那个答案,但它似乎在讨论将对象从一个上下文复制到另一个上下文。如果我只想使用一个上下文,同样的答案是否适用? 事实证明这是可行的,但需要对我的调用代码进行一些重新调整。 URL 提供了执行复制的代码,但并没有真正说明如何正确调用它。我在上面的问题中添加了我的代码。以上是关于如何在 Core Data 中制作 NSManagedObject 的深拷贝的主要内容,如果未能解决你的问题,请参考以下文章
如何将 NSMutable 数组中的数据存储在 Core Data 中?
如何在 Mac 应用程序中设置初始 Core Data 存储?