【问题标题】:Creating a Log File in an iOS app在 iOS 应用程序中创建日志文件
【发布时间】:2012-06-15 20:06:18
【问题描述】:

因此,在我的应用程序中,我有一堆数据要写入日志文件,然后在单击按钮时将其显示在 UITextView 中。我知道如何切换 UITextView,但我不知道如何创建和更新日志文件(在本地文件系统中)。感谢您的帮助。

【问题讨论】:

    标签: ios file logging uitextview


    【解决方案1】:

    基本思想是您创建文件,并在每次记录新行时附加到该文件。你可以像这样很容易地做到这一点:

    写入文件:

    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 是使用未声明的标识符。你能澄清一下吗?
    • 我的错 - 用文件名替换 logPath。错误的变量。
    • 谢谢。虽然我做了你说的一切,然后当我想将数据添加到我的 UITextView 时,使用 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 文件名,则可以看到它) ) 并查看您的文件是否存在。这将告诉您是创建错误还是阅读错误。
    【解决方案2】:

    我认为有一个类可以自动执行此操作,因为在没有运气之后创建了我自己的类。

    NSLogger 是 iOS 3.0 及以上版本的轻量级类。它允许开发人员随时间轻松记录不同的“事件”,这些“事件”在本地存储为 .txt 文件。

    https://github.com/northernspark/NSLogger

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      相关资源
      最近更新 更多