Как получить файлы, которые локально хранятся в каталоге документов приложения после обновления версии приложения ios?

Я разработал приложение для iOS, которое загружает файлы и хранит данные в каталоге документов. Я сохраняю путь к каталогу документа (где хранятся загруженные файлы) в базе данных sqlite. Теперь, если версия приложения изменится, то изменится путь к файлу базы данных и каталог документа. Если я вручную удалил приложение и установил его снова, загруженные файлы будут удалены из каталога документов, и пользователю придется снова загрузить файлы. Есть ли способ получить файл моей базы данных с путем к каталогу с ранее загруженным документом, чтобы не нужно было загружать файлы снова, или какое-либо другое решение для этого?

stackoverflow.com/questions/5607655/…
mag_zbc 10.08.2018 15:31
1
1
590
1

Ответы 1

Понять эту концепцию каталога документов

If you update the newer version of the App, Data in the document directory will not getting erased. It will be there. Just the path to reach the document directory get's updated.

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

PATH_TO_DOCUMENT_DIRECTORY/example.jpg this is the complete path for your image. and same is applies for your database.sqlite file.

Вы можете использовать эти удобные функции:

func documentsDirPath() -> String {
    var paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) as [String]
    return paths[0]
}

И назвать это можно так:

let pathToDocumentDirectory = documentsDirPath()
    let fileName = "example.jpg" // This you can get from the database.
    let filePath = pathToDocumentDirectory + "/\(fileName)"
    print(pathToDocumentDirectory)

А для приложения, которое удаляется, нет возможности восстановить содержимое каталога документов, если вы не закодируете и не сохраните данные в iCloud и при более новой установке приложения, в applicationDidFinishLaunching проверьте, есть ли какие-то файлы, присутствующие в iCloud. с именем database.sqlite и другими, затем вы можете получить его и поместить в каталог документов, а затем использовать.

Надеюсь, поможет

Другие вопросы по теме