NSFetchedResultsController更新错误的更新types

请在盲目投票之前查看这些意见。 这不是一个重复的问题。

首先 – 我正在使用MagicalRecord核心数据。 其次 – 我的UICollectionView填充UICollectionView

NSPredicate是…

 NSPredicate *eventPredicate = [NSPredicate predicateWithFormat:@"event = %@", self.event]; NSPredicate *deletedPredicate = [NSPredicate predicateWithFormat:@"deleted == NO"]; NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[eventPredicate, deletedPredicate]]; 

当我使用Magical Record的saveWithBlock将新项目添加到CoreData时, collectionView正确更新并将更改animation到视图中。

问题是,当我将更改的值删除到@YES …

 [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) { Photo *photo = [[self photoAtIndexPath:[self.collectionView indexPathForCell:cell]] inContext:localContext]; photo.deleted = @YES; }]; 

然后NSFetchedResultsController委托方法触发,除非它触发与更改typesNSFetchedResultsChangeUpdate 。 这不是它应该是。 它应该是NSFetchedResultsChangeDelete作为更改已删除的值应从删除请求中删除它。

我不想只删除对象,因为我需要用删除的ID更新服务器。

另外,如果我然后popup视图,并再次推回来的照片不见了,所以我知道它正在更新它,我知道它是从取回请求中删除它。

有任何想法吗?

你不能调用属性“已删除”,因为这与NSManagedObjectisDeleted方法冲突。

请参阅核心数据NSPredicate“deleted == NO”不能按预期的方式工作,或者NSPredicate在第一次启动时不会执行,因为如果某个属性被称为“已删除”,则会发生“奇怪的事情”。