Я работаю над кодом, который использует NSOperation
для импорта данных. Я бы хотел, чтобы пользователь мог отменить экземпляры NSManagedObject
, созданные во время операции импорта.
Насколько я могу судить, невозможно использовать NSManagedObjectContext
-undoManager
для любых операций, которые выполняются вне основного потока.
между контекстами управляемых объектов (на
отдельные потоки)
Это имеет смысл, поскольку управляемые объекты необходимо переместить из частного хранилища ( NSManagedObjectContext
) в общедоступное хранилище ( NSPersistentStore
), прежде чем они станут общими.
К сожалению, сообщение -save:
также вызывает удаление любых управляемых объектов в стеке отмены. Из раздела Управление памятью с использованием основных данных того же руководства:
Управляемые объекты, ожидающие обработки изменения (вставки, удаления или обновления) сохраняются в соответствии с их контекстом пока их контексту не будет отправлено сохранение :, сообщение сброса, отката или освобождения, или соответствующее количество отмен для отменить изменение.
Я пробовал несколько вещей, чтобы обойти это ограничение, и все в конечном итоге приводит к тому, что большая часть работы выполняется в основном потоке (и вращении пляжных мячей). вне основного потока были бы очень признательны.
-
Был отправлен радар расширения: rdar: // проблема / 8977725