- (NSFetchedResultsController *)fetchedResultsController
从 CoreDataBook 示例开始,我以标准方式在内部有谓词。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"state=%@ && date >= %@ && date < %@", @"1",fromDate,toDate];
[fetchRequest setPredicate:predicate];
这可以正常工作,但是在编辑项目时,它会返回 NSFetchedResultsChangeDelete 而不是更新。当主视图返回时,它缺少该项目。如果我重新启动模拟器,则删除未保存,并且显示正确的编辑结果,谓词正常工作。
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
我可以通过仅注释掉两个谓词行来确认行为,然后一切正常,因为它应该在编辑和调用 NSFetchedResultsChangeUpdate 而不是 NSFetchedResultsChangeDelete 后正确返回完整集。
我已阅读http://matteocaldari.it/2009/11/multiple-contexts-controllers-delegates-and-coredata-bug 报告类似行为但我没有找到解决我的问题的方法。