【问题标题】:unable to parse csv file with CHCSV parser无法使用 CHCSV 解析器解析 csv 文件
【发布时间】:2015-02-28 09:22:28
【问题描述】:

我正在使用 CHSV 解析器来解析 csv 文件,但在控制台中什么也没有,下面的代码用于解析 csv。我导入了 CHSV 头文件并提到了CHCSVParserDelegate,即使我也检查了 csv 文件名

 CHCSVParser *parser=[[CHCSVParser alloc] initWithContentsOfCSVFile:[NSHomeDirectory() stringByAppendingPathComponent:@"gapunditprogeorgiastatehouse.csv"] delimiter:','];
  parser.delegate=self;
  [parser parse];

-(void) parserDidBeginDocument:(CHCSVParser *)parser
{
  currentRow = [[NSMutableArray alloc] init];
}

-(void) parserDidEndDocument:(CHCSVParser *)parser
{
  for(int i=0;i<[currentRow count];i++)
  {
    NSLog(@"%@          %@          %@",[[currentRow objectAtIndex:i] valueForKey:[NSString stringWithFormat:@"0"]],[[currentRow objectAtIndex:i] valueForKey:[NSString stringWithFormat:@"1"]],[[currentRow objectAtIndex:i] valueForKey:[NSString stringWithFormat:@"2"]]);
  }
}

- (void) parser:(CHCSVParser *)parser didFailWithError:(NSError *)error
{
  NSLog(@"Parser failed with error: %@ %@", [error localizedDescription], [error userInfo]);
}

-(void)parser:(CHCSVParser *)parser didBeginLine:(NSUInteger)recordNumber
{
  dict=[[NSMutableDictionary alloc]init];
}

-(void)parser:(CHCSVParser *)parser didReadField:(NSString *)field atIndex:(NSInteger)fieldIndex
{
  [dict setObject:field forKey:[NSString stringWithFormat:@"%d",fieldIndex]];
}

- (void) parser:(CHCSVParser *)parser didEndLine:(NSUInteger)lineNumber
{
  [currentRow addObject:dict];
  dict=nil;
}

【问题讨论】:

  • 你遇到了什么错误.....
  • 我对 chsv 解析器一无所获
  • 您是否验证了路径正确且不返回nil?
  • 你在 [currentRow addObject:dict] 中得到什么结果;
  • 是的,我已经验证了路径@boyfarrell,

标签: ios objective-c parsing csv


【解决方案1】:

我的 csv 文件是这样的

India;26;F;New Delhi;20000;NO;0;2009
France;30;M;New York;20000;NO;1;2009
Germany;24;F;New York;20000;NO;0;2009
Mexico;28;M;New Delhi;20000;NO;1;2009

为了读取这个 csv 文件,我使用了这个方法:

NSMutableArray *arrTitle=[[NSMutableArray alloc]init];

NSString *fileDataString=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSArray *linesArray=[fileDataString componentsSeparatedByString:@"\n"];

 [linesArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)
  {
     NSArray *columnArray=[obj componentsSeparatedByString:@";"];
     [arrTitle addObject:[columnArray objectAtIndex:0]];

 }];


NSLog(@"%@",arrTitle);

这里的路径是你的 csv 文件路径。

输出是:

(
 India,
 France,
 Germany,
 Mexico
)

【讨论】:

  • 我用逗号代替了分号,但它只适用于第一列@nandu
  • @Coolcracker -- 你检查了这一行 [arrTitle addObject:[columnArray objectAtIndex:0]];他只得到 0th 索引
  • 嘿,anbu,我在解析列@Anbu.Karthik 时遇到了一个严重的错误代码
  • 我检查了 columnarray 计数它只有 1 :( 我在 csv 中有 26 列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 2023-02-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 2018-07-04
相关资源
最近更新 更多