CSV文件解析到数组Objective-C

CSV文件解析到数组Objective-C,objective-c,csv,nsarray,Objective C,Csv,Nsarray,嗨,我有一个csv文件,我想解析数组中的信息,这样我就可以在地图上使用它。 以下是我从解析部分得到的信息: NSString *filepath = [[NSBundle mainBundle] pathForResource:@"Geolocalizadas" ofType:@"csv"]; NSString *content = [NSString stringWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:

嗨,我有一个csv文件,我想解析数组中的信息,这样我就可以在地图上使用它。 以下是我从解析部分得到的信息:

NSString *filepath = [[NSBundle mainBundle] pathForResource:@"Geolocalizadas" ofType:@"csv"];
NSString *content =  [NSString stringWithContentsOfFile:filepath  encoding:NSUTF8StringEncoding error:nil];
NSLog(@"array: %@", content);
NSArray *arrayfarm = [content componentsSeparatedByString:@"\n"];
for (NSString *item in arrayfarm) {
    NSArray *itemArray = [item componentsSeparatedByString:@","];
    // log first item
    NSLog(@"%@",[itemArray objectAtIndex:0]);
}

我在内容和数组上使用nslog,并且总是得到(null)

我发现您的程序存在两个潜在问题

  • 您正在将
    nil
    参数传递给
    error:
    参数,该参数位于
    stringwithcontents文件:
    行中。如果有可能出了问题(显然是这样),你应该在那里传递一个真实的论点,这样你就可以找出哪里出了问题

  • 您正在使用
    @“\r”
    分隔文件中的字符串。这在Mac电脑上很奇怪(我猜你正在使用这个问题,因为这个问题是关于Objective-C程序的),尽管我认为这是可能的。您可能希望它是
    @“\n”
    。或者
    @“\r\n”
    ,我想,如果它是DOS格式的文件


  • 我只是对上面的#2做了一个更改,并用一个测试文件运行了您的程序,它似乎工作正常-这意味着您的问题可能与#1有关。它找不到文件,由于权限问题或类似问题而无法打开文件。

    您必须将文件的完整路径传递给
    NSString stringwithcontents文件:编码:错误:
    ,而不仅仅是文件名


    这个CSV文件在哪里?它在应用程序包中吗?文档文件夹?根据其位置创建完整路径。

    CSV文件位于支持文件上。我修改了代码,但仍然无法使其工作。请尝试删除
    目录:
    部分的
    路径资源:
    调用。该文件很可能位于资源包的根目录中。请尝试此操作,但仍显示为null,也可以尝试一个txt文件,但找不到它“pathForResource”返回什么?(您确定您的文件在包中吗?请在Finder中查找仿真器存储,并查看该文件是否在那里。)是的,您可以使用
    ComponentSeparatedByCharactersSet:[NSCharacterSet newlineCharacterSet]
    ,但这有一种倾向,即在每一行之间产生空白的“组件”。普通的旧
    \n
    在我遇到的几乎所有情况下都能更好地工作。如果“content”为null/empty,则您的文件访问会被破坏。利用“error”找出可能出现的问题。