我有一個核心數據應用程序,它具有文章數據結構&評論(一對多關係)。在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