UIActivityViewController сохраняет 2 копии PDF в приложении файлов - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь просто сохранить файл PDF в приложении «Файлы» на устройстве iOS.

Когда пользователь нажимает «Сохранить в файлы», затем «Сохранить» действие, я получить 2 копии PDF-файла, сохраненного на устройстве.

Это ошибка? Я что-то делаю не так ??

Ниже мой код

@objc func downloadPdfTapped() {
        if let fileURL = createTempPdfFile() {
            let activityVC = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
            activityVC.excludedActivityTypes = [.assignToContact, .markupAsPDF]
            present(activityVC, animated: true, completion: nil)
        }
        else {
            print("\n\nERROR CREATING PDF\n\n")
        }
    }


    private func createTempPdfFile() -> URL? {
        let tempFile             = "temp_statement.pdf"
        guard let tempFolder     = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return nil }
        self.tempFileURL         = tempFolder.appendingPathComponent(tempFile)
        guard let currentFileURL = self.tempFileURL else { return nil }

        do {
            try pdfData.write(to: currentFileURL)
            return currentFileURL
        }
        catch {
            print(error.localizedDescription)
            return nil
        }
    }

Спасибо

1 Ответ

0 голосов
/ 17 июня 2020

Хорошо, разобрался!

Я писал свой временный файл в:

guard let tempFolder = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return nil }

Однако мне действительно следовало писать его в temp папка, так что что-то вроде этого сработало ...

let tempFolder = FileManager.default.temporaryDirectory

Это дает мне реальный временный каталог.

Затем, когда вы готово, не забудьте удалить временные файлы!

...