我有一个核心数据应用程序,它具有文章数据结构&评论(一对多关系)。在NSOperation中设置核心数据关系... NSManagedObject已经失效
NSOperations管理不同线程上的下载和JSON解析,然后它使用mergeChangesFromContextDidSaveNotification将更改传递到保存它的主线程,并且fetchedResultsController负责处理tableView更改。
这些文章和评论的调用是在从服务器调用的单独的API中进行的,每个API都有它自己的NSOperation来处理导入。 (它们基于Apple的RSSImporter类松散地构建,但已经针对JSON进行了修改)。每个操作都有自己的上下文,并使用fetchedResultsController中的storeCoordinator。
commentParser.articleObjectID = [article objectID];
commentParser.persistentStoreCoordinator = [[self.fetchedResultsController managedObjectContext] persistentStoreCoordinator];
我正在尝试设置物品之间,并在的NSOperation关系的意见,我相信我通过将物品进入评论操作的objectID,然后使用该对象以下的最佳实践通过执行以下操作:
Article *article = (Article *)[self.insertionContext objectWithID:articleObjectID];
Comment *aComment = (Comment *)[NSEntityDescription insertNewObjectForEntityForName:@"Comment" inManagedObjectContext:self.insertionContext];
[aComment setCommentArticle:article];
这似乎很好地工作,但要回根的viewController其中原创文章的的tableView的时候,我得到了以下错误消息:
* Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'The NSManagedObject with ID:0xdb24f30 has been invalidated.'
任何帮助,将不胜感激!
嗨达米安。谢谢回复!我在操作结束时保存了insertionContext(后台线程moc),它将通知中的对象传递回主线程,然后合并上下文。所以不要使用对象本身。我将objectID传递回主线程并重新获取? – 2011-04-13 15:37:51
通常我会在mergeChangesFromContextDidSaveNotification中处理它。您可以发布保存操作以及您的问题如何融入您的问题,并且能够提供更有针对性的帮助? – Damien 2011-04-13 15:47:33
你的问题触发*关注*为我的部分是:NSOperations管理在不同的线程下载和JSON解析然后使用mergeChangesFromContextDidSaveNotification通过在那里的将更改保存到主线程和fetchedResultsController需要的的tableView变化照顾。 – Damien 2011-04-13 15:48:07