Основная проблема с данными iPhone: referenceData64 определена только для абстрактного класса - PullRequest
9 голосов
/ 04 марта 2010

У меня есть приложение, которое загружает / анализирует большой XML-файл и сохраняет информацию с использованием основных данных (около 4000 объектов (сущностей)). XML загружается / анализируется в другом потоке, который имеет свой собственный NSManagedObjectContext.

При попытке сохранить сущности в постоянном хранилище я иногда получаю следующую ошибку (около 20%)

2010-03-03 23: 41: 42.802 xxx [7487: 4203] Исключение при сохранении XML
2010-03-03 23: 41: 42.802 xxx [7487: 4203] Описание: * -_referenceData64 определено только для абстрактного класса. Определить - [NSTeditionalObjectID_default _referenceData64]!
2010-03-03 23: 41: 42.803 xxx [7487: 4203] Имя: NSInvalidArgumentException
2010-03-03 23: 41: 42.804 xxx [7487: 4203] UserInfo: (ноль)
2010-03-03 23: 41: 42.805 xxx [7487: 4203] Причина: *
-_referenceData64 определена только для абстрактного класса. Определить - [NSTevenObjectID_default _referenceData64]!

У меня есть простое целое число для отслеживания сущностей, создаваемых приложением, по сравнению со свойством insertObjects в NSManagedObjectContext перед сохранением, и когда я получаю сообщение об ошибке, эти числа не совпадают, в вставленных объектах NSManagedObjectContext отсутствует около 10 сущностей .

Я не знаю, как мне продолжать исследовать эту проблему, у кого-нибудь есть идеи, как это исправить?

Спасибо / Оскар

Ответы [ 2 ]

5 голосов
/ 18 марта 2010

У меня была такая же проблема с основными данными и многопоточными операциями. Прочитайте эту статью для понимания проблемы.

В рабочем потоке я начал использовать функции lock, unlock для NSManagedObjectContext и сбой больше не повторяется.

1 голос
/ 21 марта 2010

Используете ли вы собственные подклассы NSManagedObject для ваших сущностей? Эта проблема может возникнуть при неправильной инициализации и т. Д. В initWithEntity:insertIntoManagedObjectContext:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...