У меня есть приложение Core Data, которое имеет структуру данных статей и комментариев (отношение один ко многим).
NSOperations управляет загрузкой и синтаксическим анализом JSON в другом потоке, тогда он использует mergeChangesFromContextDidSaveNotification для передачи изменений в основной поток, где он сохранен, а fetchedResultsController заботится об изменениях tableView.
Вызовы статей и комментариев выполняются в отдельных API-интерфейсах, вызываемых с сервера, и у каждого есть своя NSOperation для обработки импорта. (Они свободно основаны на классе Apple RSSImporter, но были изменены для JSON). Каждая операция имеет свой собственный контекст и использует storeCoordinator из fetchedResultsController.
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 оригинальных статей, я получаю следующее сообщение об ошибке:
* Завершение приложения из-за необработанного исключения
'NSObjectInaccessibleException',
причина: «NSManagedObject с
ID: 0xdb24f30
был признан недействительным. '
Любая помощь с этим будет оценена!