NSManagedObject: создать в отдельном потоке

Я понимаю, что Core Data не является потокобезопасным и что NSManagedObjectContext и NSManagedObjects, связанные с контекстом, не могут передаваться из потока в поток.

Вопрос:

Однако, если у меня есть NSManagedObjectContext в моем основном потоке, могу ли я создать объект NSManagedObject в фоновом потоке (БЕЗ присоединения его к какому-либо контексту, то есть просто вызвать alloc / init в NSManagedObject), а затем передать этот NSManagedObject обратно в основной поток и добавить это в контекст оттуда? Я просмотрел документы по параллелизму Core Data, но не нашел ничего, что говорило бы о том, что этот шаблон использования приемлем.

Контекст:

У меня есть фоновый поток, который выполняет сложную задачу, а затем публикует результат. Результатом является подкласс NSManagedObject, который содержит несколько атрибутов: время, путь к файлу и сообщение об успехе или ошибке (в виде строки). Я хочу создать объект результата в фоновом потоке, а затем вернуть его в основной поток и добавить в контекст Core Data, где он будет отображаться в tableView.

Если я не могу создать управляемый объект в фоновый поток, тогда мне нужно будет создать словарь, передать словарь в основной поток, прочитать ключи, создать управляемый объект из этих значений и т. д. Кажется более понятным создать управляемый объект в фоновом потоке, если это возможно.

5
задан Bryan 7 July 2011 в 17:09
поделиться