请在盲目投票之前查看评论。这不是一个重复的问题。
首先 - 我正在使用MagicalRecord
核心数据。
其次 - 我的UICollectionView
填充了NSFetchedResultsController
。
NSPredicate
的{{1}}是......
NSFetchedResultsController
当我使用Magical Record的NSPredicate *eventPredicate = [NSPredicate predicateWithFormat:@"event = %@", self.event];
NSPredicate *deletedPredicate = [NSPredicate predicateWithFormat:@"deleted == NO"];
NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[eventPredicate, deletedPredicate]];
saveWithBlock
正确更新向CoreData添加新项目时,会将更改动画化为视图。
问题是当我将删除的值更改为@YES ...
时collectionView
然后[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
Photo *photo = [[self photoAtIndexPath:[self.collectionView indexPathForCell:cell]] inContext:localContext];
photo.deleted = @YES;
}];
委托方法触发,除非它使用更改类型NSFetchedResultsController
触发。但这不应该是它应该是的。它应为NSFetchedResultsChangeUpdate
,因为更改已删除的值应将其从获取请求中删除。
我不想删除该对象,因为我需要使用已删除的ID更新服务器。
此外,如果我然后弹出视图并再次将其推回,则照片消失,所以我知道它正在正确更新它,我知道它正在从获取请求中删除它。
有什么想法吗?
答案 0 :(得分:4)
您不得将某个属性称为“已删除”,因为这与isDeleted
的{{1}}方法相冲突。
参见Core Data NSPredicate "deleted == NO" does not work as expected 或NSPredicate does not get executed on first launch 对于不同的例子,如果属性被称为“已删除”,则会发生“奇怪的事情”。