2017-02-21 26 views
4

Hallo, ich bin ziemlich neu zu schnellen Programmierung so bitte bitte mit mir, wenn ich offensichtliche Fehler mache. Ich versuche Daten zu schreiben, die von einem Benutzer per Textfeld in eine Textdatei eingegeben werden. Ich bin erfolgreich in der Lage, dies durch den Code zu tun, den ich unten geschrieben habe. Wenn ich jedoch versuchte, mehr Daten zu speichern, werden die vorhandenen Daten in der Textdatei durch die neuen Daten ersetzt, die gespeichert werden. Zum Beispiel, wenn ich die Zeichenfolge 'Hallo Welt' speichern und dann eine andere Zeichenfolge speichern, die 'tschüss' sagt. Ich sehe nur die Zeichenfolge 'tschüss' in der Textdatei. Gibt es eine Möglichkeit, meinen Code zu ändern, so dass ich "Hallo Welt" auf einer Textzeile und "Tschüss" auf einer anderen Textzeile sehen kann.Schreiben in Textdatei in Swift 3

@IBAction func btnclicked(_ sender: Any) { 

    self.savedata(value: answer.text!) 
} 


func savedata (value: String){ 


let fileName = "Test" 
    let DocumentDirURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) 

    let fileURL = DocumentDirURL.appendingPathComponent(fileName).appendingPathExtension("txt") 
    print("FilePath: \(fileURL.path)") 

    let writeString = NSString(string: answer.text!) 
    do { 
     // Write to the file 
     try writeString.write(to: fileURL, atomically: true, encoding: String.Encoding.utf8.rawValue) 
    } catch let error as NSError { 
     print("Failed writing to URL: \(fileURL), Error: " + error.localizedDescription) 
    } 

Jede Hilfe gegeben wird sehr geschätzt ThankYou

+0

Sie sollten NSFileHandle verwenden, kann es bis zum Ende der Datei suchen – Sneha

Antwort

6

Hier ist ein Beispiel FIleHandler verwendet wird, angepasst Swift 3, von here (natürlich sollten Sie Behandlungs-Code alle Fehler hinzufügen, die in vermisst mein Beispiel):

let dir = FileManager.default.urls(for: FileManager.SearchPathDirectory.cachesDirectory, in: FileManager.SearchPathDomainMask.userDomainMask).first! 
let fileurl = dir.appendingPathComponent("log.txt") 

let string = "\(NSDate())\n" 
let data = string.data(using: .utf8, allowLossyConversion: false)! 

if FileManager.default.fileExists(atPath: fileurl.path) { 
    if let fileHandle = try? FileHandle(forUpdating: fileurl) { 
     fileHandle.seekToEndOfFile() 
     fileHandle.write(data) 
     fileHandle.closeFile() 
    } 
} else { 
    try! data.write(to: fileurl, options: Data.WritingOptions.atomic) 
}