在Core Data中插入/删除条目时,在不同的控制器中更新表视图

时间:2011-02-25 04:20:25

标签: ios sqlite uitableview core-data

我最近正致力于核心数据项目。有两种视图:其中一种是用户填写的表单,然后通过核心数据将条目插入到sqlite DB中;另一个视图用于显示插入的条目,并允许用户删除任何一个。

我复制了用于插入/删除基于导航的应用程序项目中的条目的代码。如果用户仅执行插入或删除,一切正常。但是,当两个操作交错时,出现问题......

例如: 1)用户使用表格插入“Apple”,“Orange”和“Grape”。该表正确显示了数据。 2)然后用户删除条目“Orange”。桌子看起来还不错。 3)之后,用户插入新条目“Pear”。然后桌子搞砸了。条目“橙色”再次出现在桌面上......

我在整个测试过程中监控了sqlite数据库,一切都运行良好。唯一的问题是桌子搞砸了。

我怀疑错误是由于表数据源未更新而引起的。当根据indexPath添加/删除行时,如果新条目与旧条目共享相同的indexPath并且表数据不是最新的,则表示重新插入旧条目。

但是我不知道为什么表格数据不是最新的。插入/删除操作在相同的托管上下文中执行。

这让我困扰了一段时间,而且我对核心数据的了解并不多。我真的希望听到任何建议让它排序。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你的怀疑是正确的。

最简单获取所需内容的方法是使用NSFetchedResultsController及其委托。

如果您在Xcode中创建虚拟项目,请创建基于导航的应用程序,并确保选中使用Core Data进行存储。

之后的区域

#pragma mark Fetched results controller delegate
RootViewController.m中的

将向您展示如何在模型更改时更新UITableView。