使用NSURL访问本地文件

我正在尝试访问资源目录中的XML文件存储。 我正在使用NSURL来使用NSURLConnection来访问这个文件(这个文件将来会被远程服务换掉)。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"file:///XMLTest.xml"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:self]; if (connection) { // Create the NSMutableData to hold the received data. // receivedData is an instance variable declared elsewhere. response = [[NSMutableData data] retain]; } else { NSLog(@"Could not create connection"); } 

启动连接的类实现NSURLConnection方法:

 connection:willCacheResponse: connection:didReceiveData: connectionDidFinishLoading: connectionDidFinishLoading: 

一旦我启动这个模拟器死亡,没有消息打印到控制台,所以我在哪里寻找损失。 任何想法,或者我只是做这个完全错误?

这也将工作:

 NSString *path = [[NSBundle mainBundle] pathForResource:@"XMLTest" ofType:@"xml"]; 

希望这可以帮助!

试图从文件系统加载任何东西是错的,错的,错的。 在设备上绝对错误,可能在模拟器上是错误的。 资源目录应该通过NSBundle类访问。

例如,要获取资源中名为“Data.txt”的文件的URL,请使用以下命令:

 NSURL *MyURL = [[NSBundle mainBundle] URLForResource: @"Data" withExtension:@"txt"]; 

如果你想从一个path中获得一个URL(比如说,因为你在NSTemporaryDirectory()中创build了一个文件,并且你需要把它作为一个URL),你可以通过使用NSURL的fileURLWithPath方法来实现:

 NSString* tempPath = NSTemporaryDirectory(); NSString* tempFile = [tempPath stringByAppendingPathComponent:fileName]; NSURL* URL = [NSURL fileURLWithPath:tempFile]; 

比+ URLWithString:和其他方法要容易得多。

你可以试试这个

  NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"file://localhost/Users/userName/Desktop/XMLTest.xml"]]; 

这里假设文件在桌面上。

Swift 3:

  let myFileName = "somefilename" let myURL = Bundle.main.url(forResource: myFileName, withExtension: "png")