【发布时间】:2012-06-15 20:06:18
【问题描述】:
因此,在我的应用程序中,我有一堆数据要写入日志文件,然后在单击按钮时将其显示在 UITextView 中。我知道如何切换 UITextView,但我不知道如何创建和更新日志文件(在本地文件系统中)。感谢您的帮助。
【问题讨论】:
标签: ios file logging uitextview
因此,在我的应用程序中,我有一堆数据要写入日志文件,然后在单击按钮时将其显示在 UITextView 中。我知道如何切换 UITextView,但我不知道如何创建和更新日志文件(在本地文件系统中)。感谢您的帮助。
【问题讨论】:
标签: ios file logging uitextview
基本思想是您创建文件,并在每次记录新行时附加到该文件。你可以像这样很容易地做到这一点:
写入文件:
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];
【讨论】:
[NSFileHandle fileHandleForUpdatingAtPath:logPath]; 说logPath 是使用未声明的标识符。你能澄清一下吗?
logFile.text = [NSString stringWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:nil]; 没有出现。我做了一些调试,发现日志文件本身为空。你知道为什么吗?
fileName 具有相同的读写值。另外,如果您在模拟器上进行测试,请查看~/Library/Application Support/iPhone Simulator/X.Y/Applications/ZZZZZ/Documents,其中 X.Y 是您运行它的模拟器版本(即 4.3、5.0 等),ZZZZZ 是您的应用程序 ID(如果您使用 NSLog 文件名,则可以看到它) ) 并查看您的文件是否存在。这将告诉您是创建错误还是阅读错误。
我认为有一个类可以自动执行此操作,因为在没有运气之后创建了我自己的类。
NSLogger 是 iOS 3.0 及以上版本的轻量级类。它允许开发人员随时间轻松记录不同的“事件”,这些“事件”在本地存储为 .txt 文件。
【讨论】: