Magical Record - 丢失我的实体信息

Posted

技术标签:

【中文标题】Magical Record - 丢失我的实体信息【英文标题】:Magical Record - losing my Entity information 【发布时间】:2014-04-16 17:31:10 【问题描述】:

我有一个应用,它有一个包含客户信息的 TableView。

如果单击某个单元格,我会加载该客户的详细信息。

我正在使用 Magical Record 来管理我的所有实体。

我在做什么:

1) 在我的 TableView 的 viewDidLoad 上加载所有 CUSTOMER 实体。 2) 用户点击查看客户详情 3) 将代表实体 CUSTOMER 的对象(只有一个)传递给细节的 ViewController。

一切正常。

问题是,如果用户选择重新加载 TableView 我这样做:

1) 去API获取所有客户 2) [客户 truncateAll] 3) 在 CoreData 上创建所有实体 5) [[NSManagedObjectContext defaultContext] saveToPersistentStoreAndWait] 6) 重新加载表格视图

但是,如果用户在此过程中点击查看客户的详细信息,下面的 ViewController 会在一段时间内正确显示客户信息。然后 [Customer truncateAll] 发生的所有信息都死掉了。

如何防止这种情况发生?

非常感谢!

【问题讨论】:

【参考方案1】:

您可以使用NSFetchedResultController 来监听您的Customer 实体更改。当您的 API 调用完成并且您在应用程序的其他位置创建适当的实体时,您将在控制器中收到有关这些更改的通知,然后您可以重新加载数据。如果您不熟悉这个概念,请查看here。

【讨论】:

我明白了。问题是,我如何识别我正在查看的同一客户?请记住,我正在做 2) [Customer truncateAll] 下载完成后立即

以上是关于Magical Record - 丢失我的实体信息的主要内容,如果未能解决你的问题,请参考以下文章

使用 Magical Record 添加到创建的实体属性

Magical Record 手动丢弃对尚未保存到数据库的所有实体的所有更改

如何使用 Magical Record 从特定上下文中简单地删除一组实体?

设置一对多关系 Core Data 和 Magical Record

Magical Record - 使用 2 个模型 Coredata 或更多

Magical Record 不会保存到 SQLite 文件