我之前做过这一点,但现在它失败了。 我想访问在我的应用程序中发布的文件。

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

返回

/Users/eldude/Library/Application Support/iPhone Simulator/7.0.3/Applications/5969FF96-7023-4859-90C0-D4D03D25998D/App.app/information.xml
.

是正确的 - 在终端和所有这些中检查。但是,尝试解析路径失败

    NSURL* fileURL = [NSURL URLWithString:path];

    NSXMLParser *nsXmlParser = [[NSXMLParser alloc] initWithContentsOfURL:fileURL];

    [nsXmlParser setDelegate:self];

    if(![nsXmlParser parse]){
        NSError* e = nsXmlParser.parserError;
        NSLog(@"ERROR parsing XML file: \n %@",e);
        self = NULL;
    }
.

Error Domain=NSCocoaErrorDomain Code=-1 "The operation couldn’t be completed. (Cocoa error -1.)" UserInfo=0xb9256f0 {NSXMLParserErrorMessage=Could not open data stream}
.

想法任何人?

有帮助吗?

解决方案

文件URL和网络URL是不同的。
来自Apple文档:

重要:要为文件系统路径创建NSURL对象,请使用
fileURLWithPath:isDirectory:
或只是 fileURLWithPath:

示例:

NSString *filePath = @"path/file.txt";
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
NSLog(@"fileURL: %@", [fileURL absoluteURL]);

NSURL *netURL = [NSURL URLWithString:filePath];
NSLog(@"netURL: %@", [netURL absoluteURL]);
.

nslog输出:
fileURL:文件:///path/file.txt
neturl:path / file.txt

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top