2012-06-15 10 views
11

私のアプリケーションでは、ボタンをクリックすると、ログファイルに書き込んで、UITextView内に表示したいデータがたくさんあります。私はUITextViewを切り替える方法を知っていますが、(ローカルファイルシステムの)ログファイルを作成して更新する方法はわかりません。助けてくれてありがとう。iOSアプリケーションでログファイルを作成する

答えて

32

基本的な考え方は、ファイルを作成して、新しい行を記録するたびにファイルを追加することです。

ファイルへの書き込み:あなたはこのように非常に簡単にそれを行うことができます

NSString *content = @"This is my log"; 

//Get the file path 
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"myFileName.txt"]; 

//create file if it doesn't exist 
if(![[NSFileManager defaultManager] fileExistsAtPath:fileName]) 
    [[NSFileManager defaultManager] createFileAtPath:fileName contents:nil attributes:nil]; 

//append text to file (you'll probably want to add a newline every write) 
NSFileHandle *file = [NSFileHandle fileHandleForUpdatingAtPath:fileName]; 
[file seekToEndOfFile]; 
[file writeData:[content dataUsingEncoding:NSUTF8StringEncoding]]; 
[file closeFile]; 

読書:私はそこにクラスが自動的に作成されていない運の後にこれを行うに思った

//get file path 
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"myFileName.txt"]; 

//read the whole file as a single string 
NSString *content = [NSString stringWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:nil]; 
+0

それは好きではないが、 '[NSFileHandle fileHandleForUpdatingAtPathは:LOGPATH];' 'logPath'が宣言されていない識別子を使用することであると言って。あなたはそれを明確にしていただけますか? –

+0

私の悪い - logPathをfileNameで置き換えてください。間違った変数。 – CrimsonDiego

+1

ありがとうございます。私はあなたが言ったことはすべてやったが、その後、UITextViewにデータを追加したいときは、 'logFile.text = [NSString stringWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:nil];'何も現れなかった。私はいくつかのデバッグを行い、ログファイル自体がnullであることを確認しました。理由は何ですか? –

1

私自身。

NSLoggerは、iOSバージョン3.0以上の軽量クラスです。開発者は、時間の経過とともに.txtファイルとしてローカルに保存されているさまざまな「イベント」を簡単に記録することができます。

https://github.com/northernspark/NSLogger