Почему мой делегат NSFetchedResultsController перестает срабатывать, когда я добавляю NSPredicate?

У меня есть NSFetchedResultsController, отображающий «места» в табличном представлении, но когда я обновляю набор мест, которые должны отображаться в другом контроллере представления, мой FRC не обновляет табличное представление.

Это общая проблема. Мой конкретный случай, кажется, вращается вокруг NSPredicate поддержки моего FRC, потому что, когда я удаляю NSPredicate (и просто получаю все места), все работает нормально.

Мой запрос

@"ANY photos.isFavorite == %@", [NSNumber numberWithBool:YES]

места связаны с фотографиями "один ко многим" (я работаю через CS193P). Возможно, мой FRC не настроен на наблюдение изменений в связанной таблице или что-то в этом роде?

Немного дополнительной информации о моей ситуации:


person ladenedge    schedule 17.03.2012    source источник


Ответы (3)


Не знаю, твое ли это дело, но все равно опубликую. Возможно, это подходящее решение.

Ошибка NSFetchedResultsController

Надеюсь, это поможет.

person Lorenzo B    schedule 17.03.2012
comment
Ага, вот и все. Для записи, FRC не принимает изменений в сущностях, кроме тех, которые предназначены для извлечения. Обходной путь - вручную испачкать соответствующий объект (в моем случае соответствующий place), чтобы FRC увидел изменение. Большое спасибо! - person ladenedge; 17.03.2012

  • Вы пробовали протестировать более простой предикат, например, используя отношение «один к одному» вместо фотографий?

  • «мой FRC не обновляет табличное представление» - Вы используете -controllerDidChangeContent:? Вы убедились, что на него не звонят? Я видел, что вопреки документации, вызов reloadData в tableView из этого метода небезопасен, поскольку метод может быть вызван во вторичном, а не в основном потоке.

  • Вы выполняете все операции, связанные с MOC, в одном (основном?) Потоке?

person Danra    schedule 17.03.2012
comment
Более простой предикат действительно работает. Когда я полностью опускаю предикат или использую предикат, который имеет дело исключительно с местами (вместо того, чтобы запрашивать соединение с фотографиями), представление таблицы обновляется, как я ожидал. (Чтобы ответить на два других ваших вопроса: да.) - person ladenedge; 17.03.2012

Попробуйте вместо этого этот предикат?

@"%@ IN photos.isFavorite", [NSNumber numberWithBool:YES]
person Danra    schedule 17.03.2012