Когда Core Data Nullify обновляет правила отношений?

Что я имею и хочу:

У меня отношение «один ко многим» A <--- >> B (часть ко многим заказана).

При удалении A все B, имеющие отношение к A, также должны быть удалены, поэтому правило удаления для отношения A к B устанавливается каскадным.-> Работает нормальноПри удалении B должно быть очищено только отношение обратно к A, поэтому правило удаления для отношения B к A установлено равным нулю-> Не работает (только после задержки)Описание проблемы:

Так что у меня точно такая же проблема, как указано в этом вопросе«Правило обнуления базовых данных не работает?»: Я удаляю B, который имеет отношение к A, и сразу после этого подсчитываю количество оставшихся B, с которыми A имеет отношение, и оно такое же, как и раньше. Принятым ответом на этот вопрос было использование каскада вместо обнуления, так как то, что делает обнуление:

Nullify устанавливает указатель в null, когда объект удаляется. Если у вас есть массив указателей, он не удаляет его, он просто устанавливает его на ноль.

Я вижу 2 вопроса с этим ответом:

Я почти уверен, что каскад является неправильным правилом в этом случае, потому что он также удалит A при удалении B, а это не то, чего я хочу достичь. (Я все же попробовал, и результат оказался таким, как я ожидал: A также был удален).Коллекция не может иметь значение null в качестве одного из своих элементов, за исключением того, что один использует NSNull singleton. Поэтому я сомневаюсь, что это то, что делает правило отмены.

Немного поэкспериментировав, я обнаружил, что, если я удаляю экземпляр B, он удаляется немедленно, но отношение к A очищается не сразу, а только после небольшой задержки:

// Method is called by pressing a button
-(void)removeLastBOfA:(A *)instanceOfA
{
    // Prints 4
    NSLog(@"fetch all b's count before:%d", [context fetchAllBs].count);
    // Prints 4
    NSLog(@"A's relation to B count before: %d", instanceOfA.relationToB.count);

    [context deleteObject:[instanceOfA.relationToB lastObject]];

    // Prints 3
    NSLog(@"fetch all b's count after:%d", [context fetchAllBs].count);
    // Prints 4, but should be 3. Last Object of A's relationToB is still the object that was deleted
    NSLog(@"A's relation to B count after: %d", instanceOfA.relationToB.count);

}

Теперь при нажатии кнопки для повторного вызова описанного выше метода без каких-либо промежуточных действий, внезапно отношение обновляется, и «отношение A к B считается раньше:3"напечатано. Таким образом, правило отмены удаления работает так, как я хочу, но с небольшой задержкой.

Вопросов:Являются ли две проблемы, которые я указал, действительны?Почему аннулирование обновляет отношение только после задержки и что это за задержка? Или в какой момент отношения обновляются после удаления NSManagedObject?

Ответы на вопрос(2)

Ваш ответ на вопрос