2016-11-16 1 views
0

Я собираюсь использовать CoreData в одном приложении macOS, чтобы обрабатывать около 100 МБ, который меняется каждую секунду, размер не должен увеличиваться значимо. Реляционный характер CoreData - именно то, что мне нужно. Я должен быть очень осторожным, чтобы не потерять данные, поэтому я хотел бы создать какой-то физический файл, который я могу сохранить в качестве резервной копии. Имеет ли CoreData уже вспомогательную функцию, или я должен сам написать ее?Резервное копирование в физический файл с использованием CoreData

ответ

1

Наиболее близким вариантом является метод NSPersistentStoreCoordinatormigratePersistentStore:toURL:options:withType:error:. Он берет существующий постоянный магазин и сохраняет его в новом месте. (Обратите внимание, что этот метод не имеет ничего общего с переносом на более новые версии модели данных). Однако, когда этот метод завершается, старый постоянный магазин удаляется из координатора постоянного хранилища и не может использоваться, если вы его повторно не добавите.

Другой вариант - изменить режим журнала. В последних версиях ОС использовалось запись на основе записи, но старый режим «удалить» по-прежнему поддерживается. В этом случае вы можете просто скопировать постоянный файл хранилища, используя методы NSFileManager. Это описано в Apple Technical Q&A QA1809. Если вы это сделаете, и вы используете внешнюю двоичную поддержку Core Data, вам нужно найти и скопировать каталог, используемый для двоичных блоков.

Смежные вопросы