2011-02-25 40 views
0

我最近在研究核心数据项目。有两个视图:其中一个是用户填写的表单,然后通过核心数据插入到sqlite数据库;另一个视图用于显示插入的条目并允许用户删除它们中的任何一个。在核心数据中插入/删除条目时更新不同控制器中的表格视图

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

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

我在整个测试过程中监控了sqlite数据库,一切正常。唯一的问题是,表格搞砸了。

我怀疑是因为表数据源没有更新的事实导致错误。由于根据indexPath添加/删除了一行,如果新条目与旧条目共享同一indexPath并且表数据不是最新的,那么看起来旧条目被重新插入。

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

这一直困扰着我一段时间,我对核心数据并没有太多的了解。我真的希望听到任何建议,以便它分类。预先感谢您的帮助。

回答

0

您的怀疑是正确的。

最简单获得你想要的方式是使用NSFetchedResultsController,它是委托。

如果您在Xcode中创建一个虚拟项目,请创建一个基于导航的应用程序,并确保选中使用核心数据存储。

后区

#pragma mark Fetched results controller delegate 
在RootViewController.m

会告诉你如何让你的UITableView更新模型更改时。

相关问题