Как разрешить пользователю доступ к файлу только через приложение? - PullRequest
0 голосов
/ 07 ноября 2019

Мое приложение может генерировать некоторую личную информацию для пользователя, и пользователь может получить к ней доступ только через приложение, а не через приложение Файлы. До сих пор я обнаружил, что нужно установить каталог из documentDirectory в libraryDirectory. Но проблема в том, что я даже не вижу файл в приложении.

Что у меня есть: Сохранение файла

func saveFile(xml: String) {
    let fileName = "myCCD"
    let DocumentDirURL = try! FileManager.default.url(for: .libraryDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    let fileURL = DocumentDirURL.appendingPathComponent(fileName).appendingPathExtension("xml")
    let text = xml
    do {
        try text.write(to: fileURL, atomically: true, encoding: .utf8)
    } catch {
        print("failed with error: \(error)")
    }
}

Файл отступления

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
    guard let selectedFileURL = urls.first else {
        return
    }

    let dir = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask).first!
    let sandboxFileURL = dir.appendingPathComponent(selectedFileURL.lastPathComponent)

    if NSURL(fileURLWithPath: sandboxFileURL.path).pathExtension != "xml"{
        showAlertOK(title: "Invalid File", message: "Health record must be an XML file!", sender: self)
        print("EHR must be an XML file!")
        return
    }

    if !FileManager.default.fileExists(atPath: sandboxFileURL.path) {
        do {
            try FileManager.default.copyItem(at: selectedFileURL, to: sandboxFileURL)
            print("Copied file to app!")
        } catch {
            print("Error copying file to app: \(error)")
        }
    } else {
        print("File already exists in app")
    }

    //Do something...
}

Когда всплывающее окно просмотра выбора документов, я не вижу файл, который я только что сохранил ранее. Есть ли способ получить к нему доступ только через приложение? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...