Набор отношений исчезает в базовых данных в нескольких контекстах - PullRequest
1 голос
/ 28 сентября 2011

У меня есть сущность 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 в обоих потоках (что, безусловно, ПЛОХО, но я только что тестировал).

Но как только я пытаюсь создать необходимый второй NSManagedObjectContext для фонового потока, который вставляет объекты A & B, эта информация об отношениях, кажется, не сохраняется.Объекты A и B определенно есть, но между ними нет никакой связи.

Вот как я создаю 2-й MOC:

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

Обратите внимание, что я получаю доступ к Базовым данным в основном потоке и вставляю их в фоновом потоке.Я использовал mergeChangesFromContextDidSaveNotification в контексте основного потока из NSManagedObjectContextDidSaveNotification, но это, похоже, ничего не дало.

ОБНОВЛЕНИЕ:

Это выглядиткак это было проблемой, когда я выпускал MOC слишком рано / ненадлежащим образом.Простое комментирование выпуска привело к тому, что проблема исчезла, но немного переписала управление памятью, чтобы контекст исправил ее правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...