请在盲目地将其作为重复投票之前查看评论。这不是一个重复的问题。
首先 - 我正在使用MagicalRecord
核心数据。第二 - MyUICollectionView
填充有NSFetchedResultsController
.
对于... NSPredicate
_NSFetchedResultsController
NSPredicate *eventPredicate = [NSPredicate predicateWithFormat:@"event = %@", self.event];
NSPredicate *deletedPredicate = [NSPredicate predicateWithFormat:@"deleted == NO"];
NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[eventPredicate, deletedPredicate]];
当我使用 Magical Record 将新项目添加到 CoreData 时saveWithBlock
,collectionView
会正确更新并将更改动画化。
问题是当我将删除的值更改为@YES 时...
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
Photo *photo = [[self photoAtIndexPath:[self.collectionView indexPathForCell:cell]] inContext:localContext];
photo.deleted = @YES;
}];
然后NSFetchedResultsController
委托方法触发,除非它以更改类型触发NSFetchedResultsChangeUpdate
。但这不是它应该的样子。应该NSFetchedResultsChangeDelete
像更改已删除的值一样将其从获取请求中删除。
我不想只删除该对象,因为我需要使用已删除的 ID 更新服务器。
此外,如果我然后弹出视图并再次将其推回,则照片消失了,因此我知道它正在正确更新它,并且我知道它正在从获取请求中删除它。
有任何想法吗?