2014-07-08 192 views
1

我有这些线路读取文件和拆分其行到一个数组的项目:阅读文件

- (NSArray *)lerLinhasArquivoBundle:(NSString *)nomeArquivo { 

    NSString *arquivo = nil; 
    NSError *error = nil; 

    NSString *bd = [[NSBundle mainBundle] pathForResource:nomeArquivo ofType:@"csv"]; 

    if (bd) { 
     arquivo = [NSString stringWithContentsOfFile:bd 
              encoding:NSUTF8StringEncoding 
               error:&error]; 
    } 

    if (error || !bd) { 
     return nil; 
    } 

    return [arquivo componentsSeparatedByString: @"\r\n"]; 
} 

的问题是,这将仅使用文件它们具有“窗口”CR/LF结尾,并且对于具有UNIX行结尾的文件将失败。当这个文件是一个UNIX文件时,我只能得到这个数组中的一个大项目。

好的,我可以破解方法来测试\r\n和只是\n,并使用一个给我更多的项目在阵列上,但这似乎是一个跛脚的解决方案。

有没有办法通过知道正在使用哪些行结束符并在返回行上使用该信息将元素拆分到数组中?

+0

是什么'返回[arquivo componentsSeparatedByCharactersInSet:NSCharacterSet newlineCharacterSet];'怎么办? – trojanfoe

+0

啊!而已。请添加此推荐作为答案!谢谢 – SpaceDog

回答

3

使用[NSCharacterSet newlineCharacterSet],而不是一个明确的字符串:

return [arquivo componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 
+1

P E R F E C T! ! !谢谢 – SpaceDog