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

相关问题