使用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")