Отмена вставки Core Data, выполняемой вне основного потока

Я работаю над кодом, который использует NSOperation для импорта данных. Я бы хотел, чтобы пользователь мог отменить экземпляры NSManagedObject , созданные во время операции импорта.

Насколько я могу судить, невозможно использовать NSManagedObjectContext -undoManager для любых операций, которые выполняются вне основного потока. между контекстами управляемых объектов (на отдельные потоки)

  • Управляемые объекты должен быть сохранен в контексте перед можно использовать идентификатор объекта.
  • Это имеет смысл, поскольку управляемые объекты необходимо переместить из частного хранилища ( NSManagedObjectContext ) в общедоступное хранилище ( NSPersistentStore ), прежде чем они станут общими.

    К сожалению, сообщение -save: также вызывает удаление любых управляемых объектов в стеке отмены. Из раздела Управление памятью с использованием основных данных того же руководства:

    Управляемые объекты, ожидающие обработки изменения (вставки, удаления или обновления) сохраняются в соответствии с их контекстом пока их контексту не будет отправлено сохранение :, сообщение сброса, отката или освобождения, или соответствующее количество отмен для отменить изменение.

    Я пробовал несколько вещей, чтобы обойти это ограничение, и все в конечном итоге приводит к тому, что большая часть работы выполняется в основном потоке (и вращении пляжных мячей). вне основного потока были бы очень признательны.

    -

    Был отправлен радар расширения: rdar: // проблема / 8977725

    15
    задан chockenberry 9 February 2011 в 18:02
    поделиться