gpt4 book ai didi

cocoa - 如何保持多个 NSManagedContext 同步?

转载 作者:行者123 更新时间:2023-12-03 16:24:29 25 4
gpt4 key购买 nike

今晚我花了几个小时尝试创建一个设置,其中我拥有三个托管对象上下文 - 一个附加到我的应用程序的委托(delegate),一个位于负责 UITableView 的 NSObject 子类中 更新(通过 NSFetchedResultsController)和 NSOperation 子类中的一个。

我可以通过观察 NSManagedObjectContextDidSaveNotification 并触发 mergeChangesFromContextDidSaveNotification: 来获取从 NSOperation 子类到应用程序委托(delegate)的更改,以便顺利进行> 在我的主线程上,但是当我尝试从 UITableView 数据源执行相同的操作时,出现以下异常:

2010-02-19 02:00:39.750 MyApp[44687:207] Serious application error.  Exception was caught during Core Data change processing: *** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0] with userInfo (null)
2010-02-19 02:00:39.750 MyApp[44687:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0]'

如果有任何建议,我将不胜感激 - 我之前所有涉及核心数据托管对象上下文的设计都是非常简单的 1:1 同步场景。我的建议可行吗?

最佳答案

更好的问题是为什么要尝试保持多个上下文同步。有两个,一个用于主应用程序使用,一个用于导入是有意义的,但导入上下文不需要保持同步,并且您已经知道如何从导入上下文中获取主上下文。

那么第三个上下文是做什么用的呢?如果它只是用于 TableView 更新,那么这是一个糟糕的设计,您应该为整个 UI 层使用单个上下文。这很可能是解决您问题的正确方法,而不是试图让三个上下文在空中杂耍。

关于cocoa - 如何保持多个 NSManagedContext 同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2289534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com