【问题标题】:NSFetchedResultsController updating with wrong update typeNSFetchedResultsController 更新类型错误
【发布时间】:2013-04-23 09:23:13
【问题描述】:

请在盲目投票为重复之前查看 cmets。这不是重复的问题。

首先 - 我将 MagicalRecord 用于核心数据。 第二 - 我的UICollectionView 填充了NSFetchedResultsController

NSFetchedResultsControllerNSPredicate 是...

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

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

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

问题是当我把deleted的值改成@YES...

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

然后NSFetchedResultsController 委托方法触发,除非它使用更改类型NSFetchedResultsChangeUpdate 触发。但这不是它应该的样子。它应该是NSFetchedResultsChangeDelete,因为更改deleted 的值应该将其从获取请求中删除。

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

此外,如果我随后弹出视图并再次将其推回,则照片消失了,因此我知道它正在正确更新它,并且我知道它正在从获取请求中删除它。

有什么想法吗?

【问题讨论】:

  • 您不应该将属性称为“已删除”:例如参见stackoverflow.com/questions/16000242/…stackoverflow.com/questions/16178847/…
  • 非常感谢。那已经解决了。不过,我不同意“类似问题”。尽管它是相同的修复程序,但它是完全不同的“症状”。我没有办法搜索那个问题。
  • 不客气。 - 我提供了这些链接,因为它们都表明如果您将属性称为“已删除”,则会发生“奇怪的事情”。我无意批评您的搜索努力! - 我不确定这是否是一个“重复的问题”:这是一个不同的问题,但相同的潜在问题,因此我投票决定以重复的形式结束。
  • 在 meta.stackoverflow.com 上阅读 Proper Handling for Different-Question-Same-Answer 后,我现在给出了答案(我不能撤销最后的投票:-)
  • 非常感谢 :) 接受了答案。

标签: ios core-data nsfetchedresultscontroller uicollectionview magicalrecord


【解决方案1】:

您不能将属性称为“已删除”,因为这与NSManagedObjectisDeleted 方法冲突。

Core Data NSPredicate "deleted == NO" does not work as expectedNSPredicate does not get executed on first launch 对于不同的例子,如果一个属性被称为“删除”,就会发生“奇怪的事情”。

【讨论】:

    猜你喜欢
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多