2016-08-27 5 views
1

ユーザー情報を格納するためにコアデータを使用しましたが、「writeToFile」を使用して測定データを書き込もうとしました。データを永続ストレージでファイルに書き込む

コアデータは、ユーザーデータの永続的な記憶域でうまく機能しました。ただし、 "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の意図された動作です。

ファイルを保存する必要がある場合は、NSFileManagerurls(for:in:)メソッドを使用して、ドキュメントディレクトリ(.documentDirectory)の場所を取得する必要があります。

+0

"そのページが見つかりません"。ドキュメントディレクトリを要求すると、ユーザーがあなたのアプリを削除するか、電話機が消去されるまで永続的になります。 documentsディレクトリ内のファイルは自動的にバックアップされます。 –

+0

こんにちは、指摘ありがとう!私はあなたの提案をurls()メソッドで実装する方法を見つけるのに少し時間が必要です。それがうまくいくなら、あなたの答えを選ぶために後で戻ってくるだろう! – Mushroomcloud

+0

もう一度お返事ありがとうございます!それは真夜中だから明日に試してみる) – Mushroomcloud

関連する問題