OGeek|极客世界-中国程序员成长平台

标题: ios - 恢复过去的 NSLog [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 10:21
标题: ios - 恢复过去的 NSLog

几天前,使用我的应用程序的测试人员遇到了一个看似不可重现的错误。我相信我的应用程序记录的 NSLogs 可能会提供有关该问题的信息,但 Xcode Organizer 控制台仅记录 260 左右的先前行。设备上是否有一些日志文件可以提供更多的 NSLog?测试人员有越狱设备,因此访问根目录应该不是问题。



Best Answer-推荐答案


为什么不使用 PList 来存储日志?

我开发了一些基于位置的应用程序。我总是要绕着某个区域开车来测试Location UpdateRegion Monitoring等的准确性。我将这些日志存储到一个PList中,然后我会分析这些日志在我完成运行后在 PList 上。

示例代码:

-(void)addLocationToPList{

  NSString *plistName = [NSString stringWithFormat"Location.plist"];
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *docDir = [paths objectAtIndex:0];
  NSString *fullPath = [NSString stringWithFormat"%@/%@", docDir, plistName];

  NSMutableDictionary *savedProfile = [[NSMutableDictionary alloc] initWithContentsOfFile:fullPath];

  if (!savedProfile){
    savedProfile = [[NSMutableDictionary alloc] init];
    self.shareModel.myCurrentLocationArray = [[NSMutableArray alloc]init];
  }
  else{
    self.shareModel.myCurrentLocationArray = [savedProfile objectForKey"locationArray"];
  }

  if(self.shareModel.myBestLocationDictFromTracker)
  {
      [self.shareModel.myCurrentLocationArray addObject:self.shareModel.myBestLocationDictFromTracker];
      [savedProfile setObject:self.shareModel.myCurrentLocationArray forKey"locationArray"];
  }

  if (![savedProfile writeToFile:fullPath atomically:FALSE] ) {
    NSLog(@"Couldn't save Location.plist" );
  }
}

每当有位置更新时,我都会调用上述函数将位置添加到 PList。您可以根据您真正需要记录的内容以任何方式使用它。

我认为它比管理器控制台日志要好得多,因为您可以提取 PList Out 并在您的 Mac 上保留一份副本以供将来分析等。我正在使用 iFunBox访问/提取 PList。

关于ios - 恢复过去的 NSLog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24028626/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4