我正在尝试逐行读取文本文件,文本文件将是一个非常小的文件,所以我只是使用了:
NSString *fileContents = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
然而,该行提出了一个例外,说:
[NSURL getFileSystemRepresentation:maxLength:]: unrecognized selector sent to instance 0x7f92c40e1890
我是Objective-C的新手,我不明白为什么会发生这种情况......
提前致谢。
NSString *filePath;
NSOpenPanel *fileBrowser = [NSOpenPanel openPanel];
[fileBrowser setCanChooseFiles:YES];
[fileBrowser setCanChooseDirectories:YES];
if ([fileBrowser runModal] == NSOKButton) {
NSArray *files = [fileBrowser URLs];
for ( int i = 0; i < [files count]; i++ ) {
filePath = [files objectAtIndex:i];
}
}
这是因为[fileBrowser URL]部分吗? 谢谢。
答案 0 :(得分:4)
看起来filePath
是NSURL
,但stringWithContentsOfFile:encoding:error:
期望路径为NSString
。
试试这个:
NSString *fileContents = [NSString stringWithContentsOfURL:filePath encoding:NSUTF8StringEncoding error:nil];
答案 1 :(得分:1)
您收到此错误是因为NSURL
没有方法getFileSystemRespresentation
,这位于NSString
。
您可以在fileContents
字符串上使用此方法,也可以将fileContents
字符串传递给NSURL
的{{1}}方法。