Мой вопрос похож на этот .
Фон
Я создаю большое количество объектов в основном хранилище данных, используя NSOperations, чтобы ускорить процесс.
Я следовал всем правилам многопоточности Core Data - у меня есть один постоянный координатор хранилища и контекст управляемого объекта на поток, который при сохранении сливается с основным контекстом управляемого объекта.
Проблема
Когда количество одновременно работающих потоков превышает 1, при сохранении моего основного хранилища данных регистрируется исключение:
NSExceptionHandler has recorded the following exception:
NSInternalInconsistencyException -- optimistic locking failure
Что я пробовал
Мой код, который создает новые сущности, довольно сложен - он делает сущности, имеющие отношения с другими сущностями, которые могут быть созданы в отдельном потоке.
Если я заменю свою подпрограмму создания объекта каким-нибудь очень простым кодом, просто делая несвязанные записи, все будет отлично работать.
Изначально, как и исключения, я получал ошибку сохранения, сообщающую, что данные ядра не могут быть сохранены из-за сбоя объединения.
Я прочитал документы и понял, что мне нужна политика слияния в контексте управляемых объектов, в который я сохранял. Я настроил это и, как указывает этот вопрос , ошибка сохранения исчезает, но исключение остается.
Мой вопрос
Нужно ли беспокоиться об этих исключениях? Если мне нужно избавиться от исключений, есть какие-нибудь идеи о том, как мне это сделать?