Пожалуйста, просмотрите комментарии, прежде чем вслепую голосуйте это как дубликат. Это не дублирующий вопрос.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 используя saveWithBlock
в collectionView
обновления магические записи должным образом и оживляют изменения в представлении.
Проблема заключается в том, что при изменении значения удален в @YES ...
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
Photo *photo = [[self photoAtIndexPath:[self.collectionView indexPathForCell:cell]] inContext:localContext];
photo.deleted = @YES;
}];
Затем NSFetchedResultsController
делегат методы пожарной, кроме него выстреливает с типом изменения NSFetchedResultsChangeUpdate
. Это не то, что должно быть. Он должен быть NSFetchedResultsChangeDelete
, так как изменение значения удаляемого должно удалить его из запроса на выборку.
Я не хочу просто удалять объект, поскольку мне нужно обновить сервер с удаленным идентификатором.
Кроме того, если я затем снова открою вид и снова верну его, фото исчезнет, поэтому я знаю, что он обновляет его правильно, и я знаю, что он удаляет его из запроса на выборку.
Любые идеи?
Вы не должны вызывать атрибут «deleted»: см. Например http://stackoverflow.com/questions/16000242/core-data-nspredicate-predicatewithblock-and-predicatewithformat-in-parent-child или http: // stackoverflow.com/questions/16178847/nspredicate-does-not-get-executed-on-first-launch. –
Отличное спасибо. Это исправило это. Я не согласен с «Подобным вопросом». Хотя это одно и то же исправление, это совершенно другой «симптом». Я не собирался искать этот вопрос. – Fogmeister
Добро пожаловать. - Я дал эти ссылки, потому что они оба демонстрируют, что «странные вещи» происходят, если вы вызываете атрибут «deleted». Я не собирался критиковать ваши усилия по поиску! - Я не уверен, что это «дублирующий вопрос»: это другой вопрос, но та же самая основная проблема, поэтому я проголосовал за то, чтобы закрыть его как дубликат. –