我试图将CSV文件的内容放入数组中。当我做这个我以前每行一个记录,并与scanUpToCharactersFromSet:intoString:
使用换行符,传递newlineCharacterSet
作为字符集:scanUpToCharactersFromSet在一个循环后停止
while ([lineScanner scanUpToCharactersFromSet:[NSCharacterSet newlineCharacterSet]
intoString:&line])
现在,我有一个文件的工作,许多条目它们本身包含换行符。我尝试在每条记录的末尾添加一个独特的字符(一个*
字符),但是我的循环只运行一次。有什么让我不知道的while循环中断吗?以下是我现在使用的代码:
NSError *error;
NSString *data = [[NSString alloc] initWithContentsOfFile:[[self delegate] filePath] encoding:NSUTF8StringEncoding error:&error];
NSScanner *lineScanner = [NSScanner scannerWithString:data];
NSString *line = nil;
// Start parsing the CSV file
while ([lineScanner scanUpToCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@"*"]
intoString:&line]) {
NSArray *elements = [line componentsSeparatedByString:@","];
NSLog("Name: %@", [elements objectAtIndex:1]);
}
**编辑:**感谢以下彼得的答案,我发现我的扫描仪被卡在*字符后面。我在循环中添加了这一行:
[lineScanner scanCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@"*"] intoString:NULL];
现在它的工作方式应该如此。
你不需要*分隔符。您可以扫描普通换行符(现在您的循环已修复)。 – 2010-01-22 12:12:06