UITableView没有';使用NSFetchedResultsController在模型更改时重新加载

UITableView没有';使用NSFetchedResultsController在模型更改时重新加载,uitableview,reloaddata,delete-row,nsfetchedresultscontroller,Uitableview,Reloaddata,Delete Row,Nsfetchedresultscontroller,从表视图中逻辑删除对象时出现问题。其想法是,若项目不应显示,则将“已删除”等项目的标志设置为1。加载数据谓词不应加载此类行 带有谓词的代码和NSFetchedResultController的创建: NSFetchRequest*request=[[NSFetchRequest alloc]initWithEntityName:@“Photo”]; request.sortDescriptors=@[[NSSortDescriptor sortdescriptor with key:@“sect

从表视图中逻辑删除对象时出现问题。其想法是,若项目不应显示,则将“已删除”等项目的标志设置为1。加载数据谓词不应加载此类行

带有谓词的代码和NSFetchedResultController的创建:

NSFetchRequest*request=[[NSFetchRequest alloc]initWithEntityName:@“Photo”];
request.sortDescriptors=@[[NSSortDescriptor sortdescriptor with key:@“section”升序:是],
[NSSortDescriptor SortDescriptor With key:@“title”升序:是];
request.predicate=[NSPredicate predicateWithFormat:@“tag=%@和deleted==%@”,self.tag@(0)];
self.fetchedResultsController=[[NSFetchedResultsController alloc]initWithFetchRequest:request
managedObjectContext:self.tag.managedObjectContext
sectionNameKeyPath:无
cacheName:nil];
删除发生在刷卡时。以下是刷卡操作:

-(iAction)deletePhoto:(UISwipegestureRecognitor*)发送方{
CGPoint location=[sender locationInView:self.tableView];
nsindepath*indepath=[self.tableView indexPathForRowAtPoint:location];
if(indexath){
Photo*Photo=[self.fetchedResultsController对象索引路径:indexPath];
[self.tag.managedObjectContext执行锁:^{
photo.deleted=@(1);//这必须触发数据更改,并且必须重新绘制视图。但由于某些原因,这不会发生。
}];
}
}
这里的问题是,只有在应用程序重新启动后,行才会被删除。出于某种原因,FetchedResultsController不会从数据中删除已更改的值,并且表视图仍然显示该行

我试图从表视图中显式删除该项,但由于第0节中的项数不正确而出现异常(这就是为什么我假定该行仍在fetch result中)。显式调用[self.tableView reloadData]或[self-performFetch]不会重新加载数据和仍然存在的项

我几乎想不出该怎么重新加载数据了


提前感谢。

我不应该在DB中为字段命名为“已删除”。重命名它,现在应用程序工作正常