Обновление NSFetchedResultsController с неправильным типом обновления
Пожалуйста, ознакомьтесь с комментариями, прежде чем слепо голосовать за это как дубликат. Это не повторяющийся вопрос.
Сначала - я пользуюсьMagicalRecord
для основных данных. Второй - МойUICollectionView
населенаNSFetchedResultsController
.
NSPredicate
дляNSFetchedResultsController
является ...
NSPredicate *eventPredicate = [NSPredicate predicateWithFormat:@"event = %@", self.event];
NSPredicate *deletedPredicate = [NSPredicate predicateWithFormat:@"deleted == NO"];
NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[eventPredicate, deletedPredicate]];
Когда я добавляю новые элементы в CoreData, используя Magical Record'ssaveWithBlock
collectionView
обновляет должным образом и анимирует изменения в представлении.
Проблема в том, что когда я меняю значение удаленного на @YES ...
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
Photo *photo = [[self photoAtIndexPath:[self.collectionView indexPathForCell:cell]] inContext:localContext];
photo.deleted = @YES;
}];
ТогдаNSFetchedResultsController
Методы делегата стреляют, за исключением того, что они запускаются с изменениемNSFetchedResultsChangeUpdate
, Это не то, что должно быть. Так должно бытьNSFetchedResultsChangeDelete
так как при изменении значения удалено следует удалить его из запроса на выборку.
Я не хочу просто удалять объект, так как мне нужно обновить сервер с удаленным идентификатором.
Кроме того, если я затем вытолкну представление и верну его обратно, фотография исчезнет, поэтому я знаю, что она корректно обновляет ее, и я знаю, что она удаляет ее из запроса на выборку.
Есть идеи?