从另一个 NSManagedObjectContext 获取 NSManagedObject(引用相同的 NSPersistentStoreCoordinator)
Posted
技术标签:
【中文标题】从另一个 NSManagedObjectContext 获取 NSManagedObject(引用相同的 NSPersistentStoreCoordinator)【英文标题】:Getting NSManagedObject from another NSManagedObjectContext (referring the same NSPersistentStoreCoordinator) 【发布时间】:2010-01-09 10:51:45 【问题描述】:我有两个不同的 NSManagedObjectContexts 都引用同一个 NSPersistentStoreCoordinator,比如 context1 和 context2。
我有一个不属于 context1 的 NSManagedObject。由于我想编辑它,不知道之后是否会保存它,我想从 context2 中获取该对象。在我不想保存 NSManagedObject 的情况下,Context2 可能会被丢弃。在保存的情况下,我会将 context2 合并到 context1 中。
但是如何从 context2 中获取对象?有没有一种简单的方法可以做到这一点,还是我必须使用谓词 xyz=[NSManagedObject objectId] 来请求对象?在这种情况下,xyz 必须是什么?
【问题讨论】:
【参考方案1】:你可以指定目标NSManagedObjectContext,即
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
myArray = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
补充您的评论:
context2object = [myEntityArrayFromContext2 objectAtIndex:[myEntityArrayFromContext1 indexOfObject:context1object]];
【讨论】:
对。这就是我从 context1 获取托管对象所做的。但现在用户决定编辑该对象。这就是为什么我需要来自 context2 的相同对象的原因。那我怎么得到呢?通过objectID? 我不确定您是否知道我的意思;)我使用上面的代码获得了所有对象。它返回了一个包含 5 个“MyEntity”类型的对象的数组。到目前为止清楚。现在我以该数组中的第三个元素为例。这个元素当然是“MyEntity”类的一个对象。现在我的问题是我试图在上面提出:如何从 contexts2 中获取类类型“MyEntity”的第三个对象?或更笼统地说:如何将现有的 NSManagedObject 关联到另一个上下文?以上是关于从另一个 NSManagedObjectContext 获取 NSManagedObject(引用相同的 NSPersistentStoreCoordinator)的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Interface Builder 的 XIB 传递 NSManagedObjectContext