У меня есть приложение, которое загружает/анализирует большой XML-файл, и храните информацию с помощью базовых данных (приблизительно 4 000 объектов (объекты)). XML загружается/анализируется в другом потоке, который имеет его собственный NSManagedObjectContext.
При попытке сохранить объекты к персистентному хранилищу, я иногда получаю следующую ошибку (приблизительно 20%)
03.03.2010 23:41:42.802 xxx [7487:4203] Исключение в сохранении XML
03.03.2010 23:41:42.802 xxx [7487:4203] Описание: * - _referenceData64 только определенный для абстрактного класса. Определите - [NSTemporaryObjectID_default _referenceData64]!
03.03.2010 23:41:42.803 xxx [7487:4203] Имя: NSInvalidArgumentException
03.03.2010 23:41:42.804 xxx [7487:4203] UserInfo: (пустой указатель)
03.03.2010 23:41:42.805 xxx [7487:4203] Причина: * - _referenceData64 только определенный для абстрактного класса. Определите - [NSTemporaryObjectID_default _referenceData64]!
У меня есть простое целое число для отслеживания объекты, которые приложение создает по сравнению с insertedObjects свойством в NSManagedObjectContext перед сохранением, и когда я получаю ошибку, эти числа не соответствуют, insertedObjects в NSManagedObjectContext пропускает приблизительно 10 объектов.
Я не знаю, как я должен продолжить исследовать эту проблему, у кого-либо есть какая-либо идея, как зафиксировать это?
Спасибо/oscar
У меня была та же проблема с основными данными и многопоточными операциями. Прочтите эту статью для понимания проблемы.
В рабочем потоке я начал использовать функции lock, unlock для NSManagedObjectContext, и сбой больше не повторяется.
Используете ли вы собственные подклассы NSManagedObject для своих сущностей? Эта проблема может возникнуть, если вы выполняете неправильную инициализацию и т. Д. В initWithEntity: insertIntoManagedObjectContext: