我设置了一个UITableViewController,有2个视图,我得到每个视图加载不同的数据安置在同一个核心数据模型。但现在,当我试图执行删除的2表之一,它似乎没有保存它。代码是:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
NSManagedObject* itemToDelete =
[self.fetchedResultsController objectAtIndexPath:indexPath];
[self.context deleteObject:itemToDelete];
}
}
}
在我添加第二个视图控制器之前,这个工作得很好,在应用程序委托中,我为标签视图使用的两个视图控制器设置了NSManagedObjectContext,然后每个视图控制器都使用相同的NSEntityDescription加载,并使用相同的代码来删除。
我的猜测是有一个问题,从应用程序委托或其他东西共享上下文,但我不确定我有什么其他的选择....
请帮忙!
在两个只在主线程上与它交互的对象之间共享NSManagedObjectContext
不应该有问题。确保每个获取的结果控制器都有其delegate
属性设置为其各自的视图控制器,并且您充分处理controllerDidChangeContent:
(这可以像在适当的表视图上调用reloadData
一样简单)。