Как скрыть файлы базы данных SQLite, чтобы они не были видны при совместном использовании файлов iTunes

В моем приложении включен общий доступ к файлам, и поэтому при просмотре папки с документами в iTunes на ней находятся файлы Core Data sqlite, которые просто ждут, когда пользователь возьмется за них.

Я нашел несколько дискуссий по этому вопросу, но, как ни удивительно, никто, похоже, не решает мои проблемы.

Некоторые говорят "переместить" их в папку библиотеки - в пользовательский подкаталог, а другие говорят, что просто переименуйте файлы с префиксом каждого с точкой.

Оба варианта звучат прекрасно, но это важные файлы ОС! Итак, мой первый вопрос: если вы сделаете что-то из этого (с NSFileManager.defaultManager() - я полагаю), приложение просто автоматически найдет их потом? ... или есть определенный "способ", которым вы делаете (любой) их... так, чтобы приложение находило их позже?

Любые ответы, если бы вы могли продемонстрировать использование Swift, а не Objective C, были бы признательны! Спасибо,:)

2 ответа

Решение

Разобрался: для всех, кто интересуется тем же (что я видел, многие делают),

В моем делегате приложения> в ленивой переменной persistentStoreCoordinator я изменил следующую строку кода:

let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("MyAppName.sqlite")

на следующие две строки кода:

let library = NSFileManager.defaultManager().URLsForDirectory(.LibraryDirectory, inDomains: .UserDomainMask)[0] as NSURL
let url = libary.URLByAppendingPathComponent("MyAppName.sqlite")

Это будет синтаксис для Swift 3 / 4:

    let library = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask)[0] as NSURL
    let url = library.appendingPathComponent("MyAppName.sqlite")
Другие вопросы по тегам