2016-08-27 3 views
1

사용자 정보를 저장하기 위해 핵심 데이터를 사용했으며 "writeToFile"을 사용하여 내장 된 가속도계에서 가져온 측정 데이터를 쓰려고했습니다.영구 저장소로 파일에 데이터 쓰기, swift

핵심 데이터는 사용자 데이터의 영구 저장 기능과 잘 작동합니다. 그러나 "writeToFile"에 저장된 측정 데이터 파일은 오랜 기간/새로운 파일이 작성된 후에 점차 사라질 것입니다.

측정 데이터 파일을 저장하기 위해 SQLite 또는 다른 데이터베이스를 사용해야합니까? 또는 코어 데이터를 사용하여 파일을 저장할 수 있습니까 (그래도 달성 할 수없는 것 같습니다). 사용자 데이터와 측정 데이터를 영구 저장소에 보관하고 싶습니다. 제안에 감사드립니다 !!

func writeToFile() { 

    let firstName = String(trial!.project!) 
    let secondName = String(trial!.record!) 


    let exportFilePath = NSTemporaryDirectory() + "\(firstName)_\(secondName).csv" 
    let exportFileURL = NSURL(fileURLWithPath: exportFilePath)! 
    NSFileManager.defaultManager().createFileAtPath(exportFilePath, contents: NSData(), attributes: nil) 

업데이트 ". NSFileManager.defaultManager() URLForDirectory"를 사용하여 문제를 해결할 . 최종 코드는 다음과 같습니다.

"createDirectoryAtURL"을 지정해야하거나 파일을 만들 수 있는지 여부는 확실하지 않습니다.

let documentsURL = NSFileManager.defaultManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: NSURL(), create: true, error: nil) 

NSFileManager.defaultManager().createDirectoryAtURL(documentsURL!, withIntermediateDirectories: true, attributes: nil, error: nil) 

let fileURL = documentsURL!.URLByAppendingPathComponent("\(firstName).csv") 

NSFileManager.defaultManager().createFileAtPath(fileURL.path!, contents: NSData(), attributes: nil) 

let fileHandle = NSFileHandle(forWritingToURL: fileURL, error: nil) 
if let fileHandle = fileHandle { 
... 
fileHandle.writeData(csvData!) 
... 
+0

나는 아직도이 재료를 직접 배우고 있지만 파일을 저장하는 위치와 관련이 있습니까? (임시 위치입니까?). 다시 말하지만, 나는이 클래스에 익숙하지 않지만 NSTemporaryDirectory()라는 이름을 붙였습니다.이 클래스는 본질적으로 일시적인 것처럼 보입니다. – Fluidity

+0

플랫폼을 표시하십시오. IOS? 샌드 박스 처리 된 Mac (App Store 앱)? 또는 무료 Mac 응용 프로그램? – OOPer

+0

안녕하세요. 그것은 iOS입니다 8 – Mushroomcloud

답변

2

NSTemporaryDirectory을 사용하여 파일을 저장하고 있습니다. 이 디렉터리의 요점은 파일이 인데, 이는 운영 체제에서 파일을 삭제할 수 있음을 의미합니다. 당신은 그들이 "오랜 기간"후에 사라진다 고 말합니다; 정확히 NSTemporaryDirectory으로 의도 된 동작입니다. 당신이 주변에 파일을 보관해야하는 경우

, 당신은 문서 디렉토리 (.documentDirectory)의 위치를 ​​얻을 수 NSFileManagerurls(for:in:) 방법을 사용해야합니다.

+0

"해당 페이지를 찾을 수 없습니다". 문서 디렉토리를 요청하면 사용자가 앱을 삭제하거나 휴대 전화가 지워질 때까지 계속됩니다. 문서 디렉토리의 모든 파일은 자동으로 백업됩니다. –

+0

안녕하세요, 지적 해 주셔서 감사합니다! urls() 메소드에 대한 제안 사항을 구현하는 방법을 찾으려면 약간의 시간이 필요합니다. 그것이 잘 작동한다면 답을 선택하기 위해 나중에 다시 올 것이다! – Mushroomcloud

+0

빠른 응답을 보내 주셔서 다시 한 번 감사드립니다! 그것은 자정이다. 그래서 나는 그것을 내일 시험 할 것이다) – Mushroomcloud