0

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

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

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

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

我尝试过的事情:

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

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

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

4

1 回答 1

2

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

希望这可以帮助!

于 2012-12-17T23:50:38.773 回答