Наше приложение NSDocument использует FileWrappers для хранения нескольких json и больших видеофайлов в Пакетах документов .Мы бы хотели использовать возможности управления версиями и восстановления NSDocuments, если это возможно.Файлы json часто меняются, а видео файлы - нет.Когда мы возвращаем true для preservedVersion , сохранение этих пакетов документов приводит к чрезмерному использованию дискового пространства.Полные копии всего пакета сохраняются в системном каталоге для каждой сохраняемой версии документа, даже если видеофайлы не изменились.
Мы переопределяем fileWrapper в NSDocument следующим образом.
override func fileWrapper(ofType typeName: String) throws -> FileWrapper {
var fileWrappers = [String:FileWrapper]()
// Simple Txt File
let metaFileText = try packageMeta.serialize()
let metaFileData = metaFileText.data(using: .utf8) ?? Data()
let metaFileWrapper = FileWrapper(regularFileWithContents: metaFileData)
fileWrappers["file.meta"] = metaFileWrapper
// Very large Video directory
if let fileUrl = self.fileURL {
let videoWrapper = try FileWrapper(url: fileUrl.appendingPathComponent("Video"), options: [])
fileWrappers[DocumentPackage.VideoDirectory] = videoWrapper
}
return FileWrapper(directoryWithFileWrappers: fileWrappers)
}
Кто-нибудь может посоветовать какие-либо способы ограничения использования дискового пространства?Нам нужна возможность получить все преимущества NSDocument, восстановления, автосохранения и т. Д. Мы просто хотим избежать дублирования одинаковых больших видеофайлов.
Обычно у нас есть документы размером 20 ГБ и более.В этой ситуации эти дополнительные резервные копии занимают более 100 ГБ дискового пространства.
Попытка написать небольшое приложение-образец, чтобы продемонстрировать проблему сейчас.