2012-06-15 154 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

我的不好 - 用fileName替換logPath。錯誤的變量。 – CrimsonDiego

+1

謝謝。雖然我做了你所說的一切,然後當我想將數據添加到我的UITextView時,使用'logFile.text = [NSString stringWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:nil];'沒有任何出現。我做了一些調試,發現日誌文件本身是空的。你有什麼想法,爲什麼? –

1

我認爲是一類在那裏這樣做,因爲之後沒有創造運氣自動我自己的。

NSLogger是iOS 3.0及以上版本的輕量級類。它允許開發人員輕鬆記錄不同的「事件」,這些事件本地存儲爲.txt文件。

https://github.com/northernspark/NSLogger

相關問題