2017-05-21 2 views
0

Derzeit ist ich die Speicherung des Dateipfades eines Bildes im Verzeichnis Dokumente durch den Verzeichnispfad zu schaffen und das Bild in dieses Verzeichnis zu schreiben, wie so:Wie aktualisiert man den Dateiverzeichnispfad eines Bildes in Swift 3.0?

func createDirectory() -> String 
{ 
    let fileManager: FileManager = FileManager.default 

    let dirPaths: [URL] = fileManager.urls(for: .documentDirectory, in: .userDomainMask) 

    let docsDir: URL = dirPaths[0] 

    let appDirPath = docsDir.appendingPathComponent("MyApp").path 

    do 
    { 
     try fileManager.createDirectory(atPath: appDirPath, 
             withIntermediateDirectories: true, attributes: nil) 
    } 
    catch let error as NSError 
    { 
     print("Error: \(error.localizedDescription)") 
    } 

    return appDirPath 
} 

func getPath() -> String 
{ 
    let paths: [String] = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) 

    let documentsDirectory: String = paths[0].appending("/MyApp") 

    return documentsDirectory 
} 

func saveToDocuments() 
{ 
    let fileManager: FileManager = FileManager.default 

    let imageData: Data = UIImageJPEGRepresentation(globalImage, 1.0)! 

    let dateTime: Date = Date() 

    let formatter: DateFormatter = DateFormatter(); 

    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"; 
    formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale! 

    globalTimeStamp = formatter.string(from: dateTime); 

    globalTimeStamp = globalTimeStamp(of: " ", with: "_") 

    globalTimeStamp = globalTimeStamp + ".jpg" 

    let documentsPath: URL = try! fileManager.url(for: .documentDirectory, in: .userDomainMask, 
                appropriateFor: nil, create: false) 

    let imagePath: URL = documentsPath.appendingPathComponent("MyApp/" + globalTimeStamp) 

    let path = imagePath.path 

    let success = fileManager.createFile(atPath: path as String, contents: imageData, attributes: nil) 
} 

Die timeStamp stellt die Bildnamen, die angehängt werden der Pfad des Verzeichnisses meiner App und in die Datei geschrieben, wie mit createFile angezeigt.

Meine Frage ist, wenn ich wollte die globalTimeStamp woanders in meiner App aktualisieren, wie kann ich den Dateipfad aktualisieren, um dieses SAME Bild-zu-Punkt stattdessen einen anderen Dateipfad neu erstellen zu müssen, die die Punkte SAME Bild?

Danke!

Antwort

0

Ich verstehe nicht ruhig, warum Sie die gleiche Datei erneut speichern möchten. Es ist bereits gespeichert. Wenn Sie das Bild in der Zwischenzeit geändert haben, schlage ich vor, dass Sie das alte löschen und das neue speichern. Das erneute Speichern des gleichen Bildes wegen der verstrichenen Zeit scheint für mich unnötig zu sein. Stattdessen würde ich das Bild umbenennen, indem Sie es in den neuen Dateipfad verschieben.

So speichern und löschen ich Bilder in einer meiner Apps unter eindeutigen Dateinamen, die ich dann in meiner App weitergeben kann. Ich weiß, dass ich noch nicht die richtige Fehlerbehandlung implementiert habe, aber dieser Code stammt aus einer unvollendeten App:

Verwandte Themen