2016-11-30 4 views
1

Ich habe eine PDF Creator App erstellt. Nach dem Erstellen der PDF-Datei möchte ich die erstellten Dateien auf einem tableview anzeigen. Ich habe Tableview Controller und DocumentDirectoryTableTableViewController erstellt. Ich weiß nicht, wie ich es nach all dem machen soll.Gespeicherte Dateien auf TableView anzeigen und öffnen

Ich fand this und this Fragen, aber ich konnte es nicht in meinen Code implementieren.

auch besser zu meinem Code für das Speichern von Datei hinzufügen:

 // 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 

UPDATE: Ich kann auch das App-Verzeichnis erhalten und sie durch diese Funktion:

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

und

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

Mein Problem ist, dass ich diese Codes nicht übereinstimmen kann. Ich meine, ich speichere hier: '/ MyApp/PdfFiles/MyPDF.pdf' aber ich habe keine Ahnung, wie man dieses Verzeichnis in den Code implementiert. Was ist falsch mit 'print (" open \ (path) ")'? Ich bin neuer Entwickler bitte ertragen Sie mit mir. @KrishnaCA – CactiApp

+0

Ich habe gerade Ihren aktualisierten Code überprüft. An welchem ​​Punkt stecken Sie fest? Außerdem ist der ursprüngliche Pfad "/MyApp/PdfFiles/MyPDF.pdf" nicht korrekt. Weil iOS-Dateipfade anders beginnen. Die Art, wie Sie es in Ihrem aktualisierten Code tun, ist korrekt – KrishnaCA

+0

@KrishnaCA Das Problem ist: Ich sehe keine Datei in der Tabellenansicht, wenn ich die App ausführen. Selbst mit dem aktualisierten Code kann ich keine Datei sehen. – CactiApp

Antwort

1

Wenn Siehabenfür die PDF-Datei Sie versuchen zu speichern und wenn Sie Benutzer möchten darauf zugreifen, können Sie es mit diesem schreiben:

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 
} 

Wenn Sie pdf-Datei wollen programmatisch in Ihrer App lesen gegeben, dass Sie es speichern im obigen Pfad. Es kann gemacht werden mit dieser:

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 
} 
+0

Ich versuche die Funktion 'readPDF'. Was soll ich für den 'Name: String' schreiben, wenn ich die Funktion aufruft? – CactiApp

+0

Hast du dein PDF gespeichert, d. H. Irgendwo schreiben? – KrishnaCA

Verwandte Themen