应用程序启动条件

我有一个经典的核心数据堆栈,其中包含一个持久性存储和两个上下文(用于UI的主要上下文,以及用于编辑,删除等的上下文)。 另外我使用NSFetchedResultsController来获取coredata对象,并在表格视图中表示一切正常,除了一种情况。

在应用程序启动时(在viewDidLoad方法中),我向服务器发送请求以获取用于与本地数据库同步的新项目,并在响应中添加或删除私有上下文中的项目,同时NSFetchedResultsController正在尝试在主要上下文中执行获取(调用viewDidLoad performFetch ),并因此导致对象发生故障,无法在表视图中显示,并且应用程序刚刚崩溃( NSManagedObjectContextDidSave通知不会发送)。

我试图用不同的方式解决这个问题,但我相信所有这些方式都不好。 例如:在删除对象之前添加sleep(1)修复问题,或者执行向DispatchQueue.main.async块中的服务器发送请求的方法修复此问题,但我无法确定这会解决问题在100%的情况下。 那么解决这个问题最好的办法是什么,不要改变核心数据栈模型,我知道我的问题不会发生在父/ chield上下文的堆栈上。

链接地址: http://www.djcxy.com/p/62135.html

上一篇: condition on app launching

下一篇: Cloudkit Sync With CoreData Issue with CKModifyOperation