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 从特定上下文中简单地删除一组实体?
设置一对多关系 Core Data 和 Magical Record