Я представляю содержимое таблицы, используя NSFetchedResultsController
, у которого есть предикат:
[NSPredicate predicateWithFormat:@"visible == %@", [NSNumber numberWithBool:YES]]
В фоновом потоке с использованием отдельного NSManagedObjectContext
я обновляю несколько объектов и изменяю их значение visible
от NO
до YES
. Сохранить, объединить изменения основного потока NSManagedObjectContext
. Но NSFetchedResultsController
fetchedObjects
не изменяется. Кроме того, контроллер не вызывает -controller:didChangeObject:...
для делегата. Если сущности обновляются в основном потоке одинаковым образом (мое тестовое приложение вызывает тот же метод), все работает так, как ожидалось.
Также Notification NSUpdatedObjectsKey
содержит эти объекты.
В настоящее время единственными решениями, которые я нашел, является вызов для каждого из объектов NSUpdatedObjectsKey
:
NSManagedObjectContext *context = ... // main thread context
[context existingObjectWithID:[object objectID] error:nil]
Эта проблема связана только с обновленными объектами, которые ранее не соответствовали предикату.
Я пропустил что-то очевидное?