Сохранение и загрузка UIDocumentBrowserViewController
Я знаю, что могу кодировать / декодировать свои файлы для сохранения / загрузки в моем UIDocument из UIDocumentBrowserViewController, используя приведенный ниже код, как описано в Apple WWDC 2017 года.
class Document: UIDocument
{
override func contents(forType typeName: String) throws -> Any
{
return NSKeyedArchiver.archivedData(withRootObject: myRootObject)
}
override func load(fromContents contents: Any, ofType typeName: String?) throws
{
guard let data = contents as? data else { return }
guard let rootObject = NSKeyedUnarchiver.unarchiveObject(with: data) as? MyRootObject else { return }
myRootObject = rootObject
}
}
Тем не менее, приведенный выше код неэффективен для больших файлов (300 МБ +) и более сложных графов объектов, как в случае с моим приложением.
Я полагаю, что было бы необходимо реализовать какую-то дополнительную экономию. Тем не менее, я понятия не имею, как этого добиться, и не смог найти учебников или документации по этому вопросу. Кроме того, NSKeyedArchiver кажется медленной альтернативой, поэтому я должен использовать что-то еще для инкрементного сохранения? Что бы было хорошим / быстрым способом реализовать сохранение / загрузку?