3

请在查看之前将其作为副本盲目投票。这不是一个重复的问题。NSFetchedResultsController更新错误更新类型

首先 - 我使用MagicalRecord作为核心数据。 秒 - 我的UICollectionView填充了NSFetchedResultsController

NSPredicateNSFetchedResultsController是...

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

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

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

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

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

然后NSFetchedResultsController委托方法火,除了它与变型NSFetchedResultsChangeUpdate触发。这不是它应该是。它应该是NSFetchedResultsChangeDelete,因为更改已删除的值应将其从提取请求中删除。

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

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

任何想法?

+0

您不应该调用属性“已删除”:请参阅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。 – 2013-04-29 16:23:44

+0

非常感谢。这已修复它。但我不同意这个“类似的问题”。虽然它是相同的修复它是一个完全不同的“症状”。我没有办法去寻找那个问题。 – Fogmeister 2013-04-29 16:30:25

+0

不客气。 - 我给出了这些链接,因为它们都表明如果您调用属性“已删除”会发生“奇怪的事情”。我不打算批评你的搜索工作! - 我不确定这是否是一个“重复问题”:这是一个不同的问题,但是同样的根本问题,因此我投票结束重复。 – 2013-04-29 16:38:56

回答