【问题标题】:Getting NSManagedObject from another NSManagedObjectContext (referring the same NSPersistentStoreCoordinator)从另一个 NSManagedObjectContext 获取 NSManagedObject(引用相同的 NSPersistentStoreCoordinator)
【发布时间】:2010-01-09 10:51:45
【问题描述】:

我有两个不同的 NSManagedObjectContexts 都引用同一个 NSPersistentStoreCoordinator,比如 context1 和 context2。

我有一个不属于 context1 的 NSManagedObject。由于我想编辑它,不知道之后是否会保存它,我想从 context2 中获取该对象。在我不想保存 NSManagedObject 的情况下,Context2 可能会被丢弃。在保存的情况下,我会将 context2 合并到 context1 中。

但是如何从 context2 中获取对象?有没有一种简单的方法可以做到这一点,还是我必须使用谓词 xyz=[NSManagedObject objectId] 来请求对象?在这种情况下,xyz 必须是什么?

【问题讨论】:

    标签: iphone core-data


    【解决方案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 关联到另一个上下文?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2011-03-20
    • 2017-12-20
    • 1970-01-01
    相关资源
    最近更新 更多