IOS核心数据并发问题

时间:2013-10-22 09:15:20

标签: core-data concurrency nsoperation master-detail

我再次谈到我的RSS阅读器iApp,目前,其设计方式如下:

  • 数据模型:Category - > Feed - > Post
  • 主视图:Feed按类别分组
  • 详细信息视图:Post用于给定的Feed

所有视图和app委托只与相同的_mainMOC(ManagedObjectContext)进行交互。

每个创建的NSOperations将使用自己的_localMOC,它与同一个NSPersistentStoreCoordinator连接。

当应用程序启动时,它会为每个Feed创建一个fetchOp NSOperation,并将其添加到NSOperationQueue中。这应该确保RSS Feed将被单独下载,解析,然后在CoreData中通过Post将其内容Post插入。

AppDelegate会观察NSManagedObjectContextDidSaveNotifications并在其收到的notification不是_mainMOC时合并修改。然后,它会发送特定的NSNotification,以通知每个视图需要reloadData

问题:

  • 我是否仍需将save:块中的_mainMOC performBlock操作括起来?
  • 我的每个观看次数应仅使用_localMOC而不是_mainMOC
  • 让每个视图的本地NSFetchedResultsController在reloadData之前重新执行提取不是多余的吗?
  • 即使在视图级别,我是否应该将任何非只读的核心数据操作排成队列NSOperation?
  • 我怎么能让所有这些变得更加顺畅(它仍然没有,我仍然有一些可怕的错误,所以重新设计是可能的)...

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

1)& 2)看起来并不是绝对必要的:毕竟我们是主线。

3)这不会造成伤害:特别是如果NSFecthedResultsController使用变量NSPredicate(参见here)。

4)无论如何我都会这样做,因为它没有受到伤害。

5)保持联系......