Мое приложение реализует веб-кэш с использованием Core Data с хранилищем SQLite (немного похоже на NSURLCache, но с большим контролем над тем, что кэшируется и когда его можно удалить из кэша).Я могу удалить старые данные из кэша, когда он становится слишком большим, но, конечно, это на самом деле не уменьшает объем дискового пространства, используемого в файловой системе.
Я знаю, что NSPersistentStoreCoordinator может быть передан Опция NSSQLiteManualVacuumOption для создания вакуума SQLite при открытии магазина, и я подумал, что это может быть хорошим способом уменьшить размер файла (даже если мне придется временно закрыть и заново открыть магазин).
Тем не менее, я управляю стеком основных данных через NSPersistentContainer.Есть ли какой-нибудь способ создать одобренный Apple пылесос SQLite с NSPersistentContainer?
Или мне нужно вручную установить стек основных данных, чтобы сделать это?
Или иначе, как еще мне вернутьПространство хранения SQLite при использовании NSPersistentConainer?
ИСПРАВЛЕНИЕ :
Я был частично неправ относительно того, что пространство не восстанавливается автоматически.Даже без установки NSSQLiteManualVacuumOption
дисковое пространство восстанавливается автоматически - иногда.Я не уверен, как это работает.Это происходит не сразу и не каждый раз, когда я сохраняю контекст, но когда это происходит, это происходит очень быстро после удаления управляемых объектов из контекста и сохранения контекста.
Если я это сделаюсерия команд удаления / сохранения, пространство между которыми не освобождается.Но если я проверю снова вскоре после этого, пространство было освобождено (иногда).
Возможно, Core Data использует прагму SQLite 'auto_vacuum' по умолчанию?Хотя, если я регистрирую прагмы sqlite, он просто печатает пустой словарь.