2016-06-23 4 views
0

ファイルを作成し、保存ボタンを押すたびに文字列を最後に追加してファイルを更新しようとしています。しかし、毎回私はそれを最新の文字列で新しいファイル(上書き)を作成保存します。私のコードは以下の通りですが、どうすれば修正できますか?助けてください!NSFileHandle updateatPathファイルを上書きするのではなく、どのように更新できますか?

func pathToDocsFolder() -> String { 

    let pathToDocumentsFolder =NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString 

    return pathToDocumentsFolder.stringByAppendingPathComponent("/log.csv") 
} 

@IBAction func saveSample(sender: AnyObject) { 

    let string = LabelText + ";" + SampleNoOne.text! + ";" + fromOne.text! + ";" + toOne.text! + ";" + casingBlowsOne.text! + ";" 

    let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)! 

    let filemanager = NSFileManager.defaultManager() 


    if filemanager.fileExistsAtPath(pathToDocsFolder()){ 
     filemanager.createFileAtPath(pathToDocsFolder(), contents: data, attributes: nil) 
    } 


    let fileHandle = NSFileHandle.init(forUpdatingAtPath: pathToDocsFolder()) 

    fileHandle!.seekToEndOfFile() 
    fileHandle!.writeData(data) 
    fileHandle!.closeFile() 
+0

ファイルが存在する場合はどうしてですか?私はあなたが存在しない場合にのみファイルを作成することを意味すると思います。 – rmaddy

答えて

0

更新:

if filemanager.fileExistsAtPath(pathToDocsFolder()){ 
    filemanager.createFileAtPath(pathToDocsFolder(), contents: data, attributes: nil) 
} 

に:

if filemanager.fileExistsAtPath(pathToDocsFolder()) == false { 
     filemanager.createFileAtPath(pathToDocsFolder(), contents: data, attributes: nil) 
    } 
0

ファイルの使用の代わりに "forUpdatingAtPath" の "forWritingAtPath" に追加したいと 次の行を置き換えます。

let fileHandle = NSFileHandle.init(forUpdatingAtPath: pathToDocsFolder()) 

With

let fileHandle = NSFileHandle.init(forWritingAtPath: pathToDocsFolder()) 

また、既存のファイルをチェックする条件も正しいことを確認してください。

関連する問題