NSFetchedResultsController更新与错误的更新类型(NSFetchedResu

2019-09-01 09:30发布

盲目地投票这是一个重复前请参阅评论。 这不是一个重复的问题。

首先-我使用MagicalRecord核心数据。 第二-我UICollectionView填充了一个NSFetchedResultsController

NSPredicateNSFetchedResultsController是...

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

NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[eventPredicate, deletedPredicate]];

当我添加新的项目,CoreData使用魔法记录的saveWithBlockcollectionView适当的更新和动画将更改视图。

问题是,当我改变的删除值@YES ...

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

然后NSFetchedResultsController委托方法火灾,除了它触发与变化类型NSFetchedResultsChangeUpdate 。 这不是它应该是什么,但。 它应该是NSFetchedResultsChangeDelete作为改变的删除的值应该从取指令请求将其删除。

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

另外,如果我再流行的观点,并再次将其推回照片都没了,所以我知道它是正确更新它,我知道它是从获取请求删除它。

有任何想法吗?

Answer 1:

你不能叫“删除”的属性,因为这与冲突isDeleted的方法NSManagedObject

参见核心数据NSPredicate“删除== NO”不能按预期工作或NSPredicate没有得到第一次启动执行不同的例子说:“奇怪的事情”发生,如果一个属性叫做“删除”。



文章来源: NSFetchedResultsController updating with wrong update type