我是开发OSX
应用程序的新手。我通常会做iOS应用程序,因此很多概念都会延续下去。但是,我似乎无法弄清楚为什么我无法检索系统中文件的数据。
为了读取用户系统上的文件,是否需要先做一些事情?
这就是我所拥有的:
- (IBAction)btnBrowse:(id)sender {
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel beginWithCompletionHandler:^(NSInteger result){
if (result == NSFileHandlingPanelOKButton) {
//Get the file url user selected
NSURL *file = [[panel URLs] objectAtIndex:0];
//Get the file data
NSError *error;
NSString *fileData = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@", file] encoding:NSUTF8StringEncoding error:&error];
//This returns null
NSLog(@"%@", fileData);
//This says that the file does not exist
NSLog(@"Error: %@", error.localizedDescription);
}
}];
}
答案 0 :(得分:4)
NSOpenPanel
返回NSURL
个对象,最简单的解决方案是使用NSURL
相关API
NSString *fileData = [NSString stringWithContentsOfURL:file encoding:NSUTF8StringEncoding error:&error];
如果您不知道文本编码,则可以使用此API,如果读取成功,encoding
包含使用的编码。
NSStringEncoding encoding;
NSString *fileData = [NSString stringWithContentsOfURL:file usedEncoding:&encoding error:&error];
答案 1 :(得分:0)
使用-[NSURL path]
方法代替调用' file'直接,因为它是NSURL,而不是NSString。