2017-04-25 5 views
1

여기에 나와있는 답변과 마찬가지로 텍스트 파일을 추가하려고합니다. 내 코드는 다음과 같이 진행됩니다텍스트 파일에 추가 할 수 없습니다.

if countdownTimer > 0 { 
    let dir = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.CachesDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).first! 
    let fileurl = dir.URLByAppendingPathComponent(fileName) 

    let date = NSDate() 
    let calendar = NSCalendar.currentCalendar() 
    let hour = calendar.component(.Hour, fromDate: date) 
    let minutes = calendar.component(.Minute, fromDate: date) 
    let seconds = calendar.component(.Second, fromDate: date) 

    newLine = "\(hour):\(minutes):\(seconds),\(someValue),\(someValue)\n" 

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


    if NSFileManager.defaultManager().fileExistsAtPath(fileurl!.path!) { 
     do { 
      let fileHandle = try NSFileHandle(forWritingToURL: fileurl!) 

      fileHandle.seekToEndOfFile() 
      fileHandle.writeData(data) 
      fileHandle.closeFile() 
     } catch { 
      print("Can't open fileHandle \(error)") 
     } 
    } else { 

    } 
     countdownTimer -= 1 
} 

내 구현에 차이가 나는 별도의 이벤트에 파일을 생성하고 (나는 파일이 추가되기 전에 존재한다는 것을 확신) 및 텍스트 파일을 추가한다는 것입니다 타이머 내부 매초마다 반복됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 감사.

답변

1

어디에서 실수를 할 수 있는지 이해하는 데 도움이되는 코드를 작성합니다.

먼저 우리가 정보를 기록 할 곳의 유형과 파일 이름을 Error으로 만드십시오.

let file = "logger1.txt" 

enum Throwing: Error { 
    case impossibleToWrite 
    case impossibleToRead 
} 

보다 두 가지 기능을 것입니다 writeToFilereadFromFile.

날짜가있는 로그를 반복 작성하는 로그보다 작습니다. 시도의 사용법! 나쁜 습관이지만 테스트 목적으로는 괜찮습니다.

func logTimeInLoop() { 

    for _ in 0..<10 { 
     let formatter = DateFormatter() 
     formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS " 
     let text = formatter.string(from: Date()) + "\n" 

     try! writeToFile(file: file, log: text) 
    } 

    try! readFromFile(file: file) 
} 

이것은 파일의 데이터 출력입니다. 우선

enter image description here

+0

, 응답에 대한 감사합니다. 구문 오류를 제거하기 위해 사소한 수정을 사용하여 샘플 코드를 구현하려고 시도했지만 여전히 동일한 문제에 직면하고 있습니다. – Lysdexia

+0

@Cuevas 무엇이 문제입니까? 내 코드 예제를 실행하고 있습니까? 그렇다면 모든 데이터를 추가합니다. \ –

+0

예, 코드를 실행하고 있지만 패키지 내용을보고 생성 된 파일을 탐색 할 때 정보가 없습니다. 예를 들어 여기에 다른 구현이 있기 때문에 (정보를 수집하고, 변수에 연결하고, 변수로 로그 파일을 만들고, 모든 정보가 인쇄되기 때문에) 정말 이상합니다. 그러나이 경우에는 그렇지 않습니다. – Lysdexia