NSURL始终是零差分编码

时间:2013-04-16 17:45:32

标签: ios nsbundle

我正在生成一个PDF文件,并且我正在尝试预览它,如下所示,但是,尽管我的格式化(这似乎解决了其他所有人对这个常见问题的问题),URL也会定期返回NIL。我一定错过了更多的东西。有什么想法吗?

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    
NSString *docDirectory = [path objectAtIndex:0];

    docDirectory = [docDirectory stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSURL *URL = [[NSBundle mainBundle] URLForResource:docDirectory withExtension:@"pdf"];
if (URL) {
    // Initialize Document Interaction Controller
    self->documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:URL];
    // Configure Document Interaction Controller
    [self->documentInteractionController setDelegate:self];
    // Preview PDF
    [self->documentInteractionController presentPreviewAnimated:YES];
}

2 个答案:

答案 0 :(得分:1)

你创造的道路似乎完全没有了。尝试这样的事情:

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    
NSString *docDirectory = [path objectAtIndex:0];
NSString *filename = @"myfile.pdf"; // replace with the actual filename you used
NSString *fullPath = [docDirectory stringByAppendingPathComponent:filename];
NSURL *fullURL = [NSURL fileURLWithPath:fullPath];

在您发布的代码中,您不提供文件名。您有Documents目录和pdf扩展名。在这种情况下,没有必要“%逃避”URL。

答案 1 :(得分:0)

您可能对如何获取文件路径感到困惑:NSSearchPathForDirectoriesInDomains用于获取(例如)文档目录的绝对路径。另一方面,NSBundle的{​​{1}}在应用包装器中搜索具有提供名称的文件。

将两者混合起来并不好。您应该只查看文档目录。