3

Пожалуйста, просмотрите комментарии, прежде чем вслепую голосуйте это как дубликат. Это не дублирующий вопрос.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, так как изменение значения удаляемого должно удалить его из запроса на выборку.

Я не хочу просто удалять объект, поскольку мне нужно обновить сервер с удаленным идентификатором.

Кроме того, если я затем снова открою вид и снова верну его, фото исчезнет, ​​поэтому я знаю, что он обновляет его правильно, и я знаю, что он удаляет его из запроса на выборку.

Любые идеи?

+0

Вы не должны вызывать атрибут «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. –

+0

Отличное спасибо. Это исправило это. Я не согласен с «Подобным вопросом». Хотя это одно и то же исправление, это совершенно другой «симптом». Я не собирался искать этот вопрос. – Fogmeister

+0

Добро пожаловать. - Я дал эти ссылки, потому что они оба демонстрируют, что «странные вещи» происходят, если вы вызываете атрибут «deleted». Я не собирался критиковать ваши усилия по поиску! - Я не уверен, что это «дублирующий вопрос»: это другой вопрос, но та же самая основная проблема, поэтому я проголосовал за то, чтобы закрыть его как дубликат. –

ответ

Смежные вопросы