存储从Core Data(iOS)获取的数据的首选方法

时间:2012-12-17 23:42:58

标签: objective-c ios core-data nsmanagedobject

假设我正在构建一个显示联系人UITableView的应用程序。用户的联系人存储在远程服务器上。我从服务器获取用户的联系人并将其存储在Core Data中。

我的UITableViewController加载并从Core Data获取NSManagedObject子类(名为ContactVO)的数组。我使用这个ContactVOs数组来填充我的UITableView。然后,我向服务器发出请求以提取用户的最新联系人列表。当我从服务器收到响应时,我从Core Data存储中删除所有联系人,然后插入从服务器数据创建的联系人。此时,我通知我的UITableViewController数据已更改,并通过委托方法将新联系人传递给它。

问题:一旦我从Core Data中删除了联系人,对我的UITableViewController中存储的ContactVO的引用就是垃圾。

这里的想法是让表格视图始终允许用户互动,但始终显示最新的联系人。

我尝试过的事情:

  • 创建一个具有与ContactVO相同属性的类(Contact),并使用从Core Data获取的数据填充此类的实例,然后将Contact对象数组返回到我的UITableViewController

  • 为每个获取的ContactVO创建一个NSDictionary,并将一个字典数组返回给我的UITableViewController

必须有比这两者更好的方法。存储获取请求的结果的首选方法是什么?

1 个答案:

答案 0 :(得分:2)

您应该阅读NSFetchedResultsControllerdelegate。它可以帮助您在模型更改(对象已删除,添加,修改)时刷新表中显示的数据。你也可以在Xcode中找到一个示例项目,我相信它叫做Core Recipes。

希望这有帮助!