为什么我的数组中的每个其他对象都是空白的?

时间:2011-12-25 04:01:53

标签: objective-c csv nsstring nsarray

我使用以下方法将CSV文件读入数组:

NSString *theWholeTable = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"example" ofType:@"csv"]
                                                    encoding:NSUTF8StringEncoding 
                                                       error:NULL];
NSArray *tableRows = [theWholeTable componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

数组中的每个第二个对象都是空的,知道为什么?

CSV文件数据如下所示: 10,156,326,614,1261,1890,3639,5800,10253,20914 20,107,224,422,867,1299,2501,3986,7047,14374

10和20是每个新行的开头。

提前感谢。

修改 的 我尝试使用以下代码:

NSArray *tableRows = [theWholeTable componentsSeparatedByString:@"\n"];

这也是我想要的方式。

虽然我仍然不确定为什么newlineCharacterSet创建了空对象......

2 个答案:

答案 0 :(得分:9)

如果您的CSV文件来自非UNIX系统,则它可能包含多个行分隔符(例如\r\n而不是\n)。在这种情况下,componentsSeparatedByCharactersInSet会在\r\n之间为空字符序列插入空字符串。

您可以使用以下方法从NSArray删除空字符串:

tableRows = [tableRows filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]];

答案 1 :(得分:1)

解决这个问题,我用其他方法:

NSArray *tableRows = [theWholeTable componentsSeparatedByCharactersInSet:[NSCharacterSet  characterSetWithCharactersInString:@"\n"]]

所以你不需要删除任何行。