NSURL总是为零编码

问题描述:

我正在生成一个PDF文件,并试图预览它,如下所示,但URL通常返回NIL,尽管我的格式(这似乎解决了这个常见问题的其他人的问题)。我一定会错过更多的东西。有任何想法吗?NSURL总是为零编码

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]; 
} 

您的路径创建似乎全部出了问题。尝试是这样的:

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。

你可能会感到困惑的是如何获取到你的文件的路径:NSSearchPathForDirectoriesInDomains用来去(例如)文档目录的绝对路径。 NSBundleURLForResource:withExtension:另一方面使用提供的名称在应用程序包装器中搜索文件。

把两者混合在一起不会有好处。您应该只需查看文档目录即可。