在TableView上显示和打开已保存的文件

时间:2016-11-30 11:47:21

标签: ios swift uitableview

我制作了一个pdf创建者应用程序。创建pdf文件后,我想在tableview上显示创建的文件。我创建了Tableview Controller和DocumentDirectoryTableTableViewController。毕竟,我不知道怎么做。

我发现了thisthis个问题但我无法在我的代码中实现它。

最好添加我的代码来保存文件:

        // 5. Save PDF file
    let path = "/MyApp/PdfFiles/MyPDF.pdf"
    pdfData.write(toFile: path, atomically: true)
    print("open \(path)") // command to open the generated file

更新 我也可以通过此功能获取App Directory并使用它:

    func getDocumentsDirectory() -> URL {
    let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
    let documentsDirectory = paths[0]
    return documentsDirectory
}

let path = "\(getDocumentsDirectory())MyApp.pdf"

1 个答案:

答案 0 :(得分:1)

如果您正在尝试存储pdf文件NSData,并且您希望用户访问该文件,则可以使用以下命令编写:

func writePDF(data: NSData, to Name:String) -> Bool {

    let pdfData:NSData = data

    let pdfPaths:[String] = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    var pdfPath = pdfPaths[0]
    pdfPath.append("_\(Name).pdf")
    let result:Bool = pdfData.write(toFile: pdfPath, atomically: true)

    return result
}

如果您希望在应用程序中以编程方式阅读pdf文件,并将其存储在上述路径中。可以使用以下方法完成:

func readPDF(Name: String) {

    let pdfPaths:[String] = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    var pdfPath = pdfPaths[0]
    pdfPath.append("_\(Name).pdf")
    if let pdfData:NSData = NSData(contentsOfFile: pdfPath) { // verifying pdf exists in this path
        let documentController: UIDocumentInteractionController = UIDocumentInteractionController(url: URL(fileURLWithPath: pdfPath))
        documentController.delegate = self
        documentController.presentPreview(animated: true)
    }
}

// the below delegate function for `UIDocumentInteractionController` is necessary for it to present in the current `UIViewController`
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
    return self
}