Как сохранить файл PDF в локальном каталоге хранения вместо каталога разработчика в Swift? - PullRequest
0 голосов
/ 28 февраля 2020

Я хотел бы сохранить файл PDF, полученный из tableView, в моем локальном хранилище. В настоящее время прямо сейчас он сохраняется в каталоге разработчика. Но я хотел бы сохранить его во внутренней директории хранения пользователя, поскольку мое требование заключается в том, чтобы он был доступен и просматривался пользователем. PDF содержит ежемесячный отчет пользователя. Я хотел бы сохранить PDF на внутреннем хранилище устройства. Я разработал некоторые вещи. Но это, похоже, не работает. Пожалуйста, предложите мне лучшее решение и укажите, где я не так делаю?

// Export pdf from UITableView and save pdf in drectory and return pdf file path

func exportAsPdfFromTable() -> String {

        let originalBounds = self.bounds
        self.bounds = CGRect(x:originalBounds.origin.x, y: originalBounds.origin.y, width: self.contentSize.width, height: self.contentSize.height)
        let pdfPageFrame = CGRect(x: 0, y: 0, width: self.bounds.size.width, height: self.contentSize.height)

        let pdfData = NSMutableData()
        UIGraphicsBeginPDFContextToData(pdfData, pdfPageFrame, nil)
        UIGraphicsBeginPDFPageWithInfo(pdfPageFrame, nil)
        guard let pdfContext = UIGraphicsGetCurrentContext() else { return "" }
        self.layer.render(in: pdfContext)
        UIGraphicsEndPDFContext()
        self.bounds = originalBounds
        // Save pdf data
        return self.saveTablePdf(data: pdfData)

    }

    // Save pdf file in document directory
    func saveTablePdf(data: NSMutableData) -> String {
        let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
//        let path = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
        let docDirectoryPath = paths[0]
        let pdfPath = docDirectoryPath.appendingPathComponent("Report.pdf")
        if data.write(to: pdfPath, atomically: true) {
            return pdfPath.path
        } else {
            return ""
        }

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