阅读' CSV' xCode中的文件

时间:2012-04-28 14:09:52

标签: iphone objective-c ios xcode csv

你能帮我读一下这个csv文件吗?

CSV输出

“^ GSPC”,1403.36, “4/27/2012”, “下午四点32”,+ 3.38,1400.19,1406.64,1397.31,574422720 “^ IXIC”,3069.20, “4/27/2012”, “下午5:30”,+ 18.59,3060.34,3076.44,3043.30,0

ViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *absoluteURL = @"http://myserver/data.csv";
    NSURL *url = [NSURL URLWithString:absoluteURL];
    NSString *fileString = [[NSString alloc] initWithContentsOfURL:url];
    NSScanner *scanner = [NSScanner scannerWithString:fileString];
    [scanner setCharactersToBeSkipped:
    [NSCharacterSet characterSetWithCharactersInString:@"\n, "]];
    NSMutableArray *newPoints = [NSMutableArray array];

}

2 个答案:

答案 0 :(得分:2)

处理CSV解析比初始代码暗示的要快,因为需要忽略引用的分隔符。例如,

1,"Hello, world!",2

有三列,但NSScanner会找到四个令牌(1"Hello,“世界!”和2)。

要构建功能齐全的CSV解析器,需要处理许多特殊情况,因此使其工作的最快方法是使用预先构建的解析器。例如,您可以使用this answer on Stack Overflow中描述的解析器。

答案 1 :(得分:0)

我可能来不及回答这个问题,但可能这个答案可以帮助某人轻松阅读CSV文件。这是我没有阅读CSV文件

   - (void)viewDidLoad {
    [super viewDidLoad];
   //  printing the file path

      NSMutableArray *colA = [NSMutableArray array];
      NSMutableArray *colB = [NSMutableArray array];
   NSMutableArray *colC = [NSMutableArray array];
   NSMutableArray *colD = [NSMutableArray array];
  //  NSString* fileContents = [NSTemporaryDirectory() 
stringByAppendingPathComponent:@"yourfile.csv"];
NSString *fileContents = [[NSBundle mainBundle] 
 pathForResource:@"yourfile" ofType:@"csv"];

  NSURL*URl = [NSURL fileURLWithPath:fileContents];

  //        NSString* fileContents = [NSString 
stringWithContentsOfURL:@"YourFile.csv"];
   NSError *error;
  NSString* fileContentss = (NSString *)[NSString 
 stringWithContentsOfURL:URl encoding:NSASCIIStringEncoding 
error:&error];

   NSMutableArray *newArra = [[NSMutableArray alloc] init];
   [fileContentss stringByReplacingOccurrencesOfString:@"\"" 
  withString:@""];
      NSArray* rows = [fileContentss 
   componentsSeparatedByString:@"\n"];

   NSMutableArray *roearr = [[NSMutableArray alloc] init];
   roearr = [rows mutableCopy];


    [roearr removeObjectAtIndex:[rows count] - 1];
      for (NSString *row in roearr){



          NSArray* columns = [row componentsSeparatedByString:@","];

          newArra = [columns mutableCopy];

         [newArra removeObjectAtIndex:[newArra count] - 1];
            [colA addObject:newArra[0]];
            [colB addObject:newArra[1]];
            [colC addObject:newArra[2]];
            [colD addObject:columns[3]];
       }

     NSLog(@"columns[0] %@",colA);
    NSLog(@"columns[0] %@",colB);
    NSLog(@"columns[0] %@",colC);
    NSLog(@"columns[0] %@",colD);


   // Do any additional setup after loading the view, typically from 
  a nib.
  }