2016-06-23 2 views
0

저장 버튼을 누를 때마다 끝에 문자열을 추가하여 파일을 만들고 파일을 업데이트하려고합니다. 그러나, 때마다 나는 최신 파일을 (덮어 씁니다) 최신 문자열을 생성 저장을 누르십시오. 내 코드가 아래에 있습니다. 어떻게 해결할 수 있습니까? 도와주세요!NSFileHandle 업데이트 경로 어떻게 덮어 쓰기 대신 파일을 업데이트 할 수 있습니까?

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()) 

또한 기존 파일을 검사하기위한 조건이 올바른지 확인하십시오.

관련 문제