关系集在具有多个上下文的Core Data中消失

时间:2011-09-27 21:22:34

标签: iphone ios multithreading cocoa-touch core-data

我有一个实体A,它与实体B有多对多的关系以及相应的反向关系。

我将B对象添加到A中:

    NSMutableSet *bSet = [aObj mutableSetValueForKey:@"B"];
    for (bData in some array) {
        [ create and insert bObj within SAME context ];
        [bSet addObject:bOjb];
    }
    [context insertObject:aObj];

    [context save:&err];

这在单线程情况下或在双线程情况下使用一个NSManagedObjectContext跨两个线程(这绝对是坏的,但我只是在测试)中工作正常和花花公子。

但是,一旦我尝试为插入A& A的背景线程创建必要的第二个NSManagedObjectContext。 B对象,这种关系信息似乎不会持续存在。 A和B对象肯定存在,但它们之间没有关系。

以下是我创建第二个MOC的方法:

    NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
    [context setPersistentStoreCoordinator:[(AppDelegate*) [UIApplication sharedApplication].delegate persistentStoreCoordinator]];

请注意,我访问主线程中的Core Data,并将它们插入后台线程中。我在mergeChangesFromContextDidSaveNotification的主线程上下文中使用了NSManagedObjectContextDidSaveNotification,但似乎没有做任何事情。

更新

看起来这是我过早/不正当地发布MOC的问题。简单地评论一下这个问题就会导致这个问题消失,但是对于上下文的内存管理进行了一些改写,正确地修复了它。

0 个答案:

没有答案