我正在尝试使用Objective-C从外部txt文件(大约180kb)逐个读取行。我在这里找到了这段代码。我理解它的方式这个代码会将每一行都放在一个元素中吗?
- (IBAction)start:(id)sender; {
NSString *fh = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];
for (NSArray *line in [fh componentsSeparatedByString:@"\n"]) {
NSLog(@"output= %@",line[5]);
}
}
我尝试通过在输出中打印一行来检查它是否正常工作但没有任何反应,我在这里做错了什么?
谢谢,
更新: 我提出了建议的更改,因为它的投票率确实为零。如果我把一个字符串包含一段文本文件(包括一些\ n),它可以正常工作。我检查了文件路径,但这似乎没问题,所以现在的问题是如何来fh = nil?
NSString *fh = [NSString stringWithContentsOfFile:@"file:///Users/Mubanga/Documents/Blender/rough2.txt" encoding:NSUTF8StringEncoding error:nil];
if([fh length] == 0) {
NSLog(@"fh=nil");
}
for (NSString *line in [fh componentsSeparatedByString:@"\n"]) {
NSLog(@"output= %@",line);
}
}
答案 0 :(得分:3)
循环应该是:
for (NSString *line in [fh componentsSeparatedByString:@"\n"]) {
NSLog(@"output= %@",line);
}
(line
将为NSString
,输出应为line
,而不是line[5]
。
答案 1 :(得分:3)
除了@ trojanfoe的回答所需的更改,您的fh
还是nil
因为路径错了。 stringWithContentsOfFile:
期望一条简单的道路,而不是
文件URL。它应该是:
NSString *fh = [NSString stringWithContentsOfFile:@"/Users/Mubanga/Documents/Blender/rough2.txt" encoding:NSUTF8StringEncoding error:nil];
通常,您应该使用错误参数:
NSError *error;
NSString *fh = [NSString stringWithContentsOfFile:@"/Users/Mubanga/Documents/Blender/rough2.txt"
encoding:NSUTF8StringEncoding
error:&error];
if (fh == nil) {
NSLog(@"Could not read file: %@", error);
} else {
// ...
}
答案 2 :(得分:1)