Iphone 使用NSURL访问本地文件
我正在尝试访问resources目录中的XML文件存储。我正在使用NSURL通过NSURLConnection访问此文件(此文件将在将来交换为远程服务) 启动连接的类实现NSURLConnection方法:Iphone 使用NSURL访问本地文件,iphone,ios,Iphone,Ios,我正在尝试访问resources目录中的XML文件存储。我正在使用NSURL通过NSURLConnection访问此文件(此文件将在将来交换为远程服务) 启动连接的类实现NSURLConnection方法: connection:willCacheResponse: connection:didReceiveData: connectionDidFinishLoading: connectionDidFinishLoading: 一旦我启动这个模拟器,它就会死掉,没有消息被打印到控制台上
connection:willCacheResponse:
connection:didReceiveData:
connectionDidFinishLoading:
connectionDidFinishLoading:
一旦我启动这个模拟器,它就会死掉,没有消息被打印到控制台上,所以我不知道该去哪里看。有什么想法吗,或者我完全错了?尝试从文件系统根目录加载任何内容都是错误的,错误的,错误的。在设备上肯定是错误的,在模拟器上也可能是错误的。应通过
NSBundle
类访问资源目录
例如,要获取资源中名为“Data.txt”的文件的URL,请使用以下命令:
NSURL *MyURL = [[NSBundle mainBundle]
URLForResource: @"Data" withExtension:@"txt"];
这也将有助于:
Obj-C
斯威夫特5
希望这有帮助 你可以试试这个
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"file://localhost/Users/userName/Desktop/XMLTest.xml"]];
这里假设文件在桌面上 如果您想从路径获取URL(例如,因为您在NSTemporaryDirectory()中创建了一个文件,并且需要将该文件作为URL获取),可以使用NSURL的fileURLWithPath方法轻松实现:
NSString* tempPath = NSTemporaryDirectory();
NSString* tempFile = [tempPath stringByAppendingPathComponent:fileName];
NSURL* URL = [NSURL fileURLWithPath:tempFile];
比+URLWithString:和其他方法简单得多。Swift 3:
let myFileName = "somefilename"
let myURL = Bundle.main.url(forResource: myFileName, withExtension: "png")
同意。这是访问资源文件夹的正确方法!我在iOS上的印象是“/”访问了应用程序沙盒根目录,我很容易就大错特错了。这是我用来获取url的代码,应用程序仍然会崩溃,但这似乎是一个更明智的举动NSURL*url=[[NSBundle mainBundle]URLForResource:@“XMLTest”带扩展名:@“xml”]`在模拟器上,似乎,/表示主机根。这意味着你们将在设备和模拟器上得到完全不同的结果——不好。不管怎样,沙盒根目录与bundle resources文件夹不同。您可以通过提供更多的代码来扩展您的答案吗?我正在做以下操作,但不起作用:
NSURL*bundleResourcePath=[[NSBundle mainBundle]resourceURL]代码>NSURL*url=(NSURL*)[[NSBundle mainBundle]路径用于资源:@“png”类型的“SomeImage”目录:[NSString stringWithContentsOfURL:bundleResourcePath编码:NSSTRINGENCODINGCONVERSOEXTERNALREPREPRESSION错误:nil]代码>NSLog(@“BundlerSourcePath:%@”,BundlerSourcePath)代码>NSLog(@“url:%@”,url)代码>。第一个NSLog正确显示URL,但第二个输出(null)。@cocoanob:edited。但您似乎混淆了路径和URL。这一个给出的是文件系统路径,而不是URL。我不明白为什么,但OP想从URL加载他的XML。也许是为了更方便地移植到基于网络的资源…虽然我的答案被标记为正确答案,但我相信来自Seva的答案实际上是正确的!可以更新吗?文件需要在文件夹层次结构中的什么位置才能工作?我使用文件的绝对路径,这对我很有帮助。
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"file://localhost/Users/userName/Desktop/XMLTest.xml"]];
NSString* tempPath = NSTemporaryDirectory();
NSString* tempFile = [tempPath stringByAppendingPathComponent:fileName];
NSURL* URL = [NSURL fileURLWithPath:tempFile];
let myFileName = "somefilename"
let myURL = Bundle.main.url(forResource: myFileName, withExtension: "png")