2012-03-20 23 views
4

NSString(ドキュメントディレクトリのファイルへのパス)をNSURLに変換しようとしていますが、NSURLは常にnullです。ここに私のコードは次のとおりです。NSStringはNSURLに変換されません(NSURLはnullです)

NSURL *urlToPDF = [NSURL URLWithString:appDelegate.pdfString]; 
NSLog(@"AD: %@", appDelegate.pdfString); 
NSLog(@"PDF: %@", urlToPDF); 
pdf = CGPDFDocumentCreateWithURL((CFURLRef)urlToPDF); 

そして、ここでは、ログです:

2012-03-20 18:31:49.074 The Record[1496:15503] AD: /Users/John/Library/Application Support/iPhone Simulator/5.1/Applications/E1F20602-0658-464D-8DDC-52A842CD8146/Documents/issues/3.1.12/March 1, 2012.pdf 
2012-03-20 18:31:49.074 The Record[1496:15503] PDF: (null) 

私は問題の一部は、NSStringのは、スラッシュ/とダッシュが含まれていることかもしれないと思います - 。私は間違って何をしていますか?ありがとう。

答えて

6

このようにファイルパスを作成しないのはなぜですか。

NSString *filePath = [[NSBundle mainBundle]pathForResource:@"pdfName" ofType:@"pdf"]; 

次に、このようなファイルパスでURLを作成します。

NSURL *url = [NSURL fileURLWithPath:filePath]; 
+0

これは嬉しいことです:) –

+2

さらに進んで、[ - [NSBundle URLForResource:withExtension:] 'を使用すると、file:// URLが直接得られます。 –

6

事がappDelegate.pdfStringが有効なURLではありません、それはパスだ、です。

file://host/path 

またはローカルホスト用:file URLは次のようになります

file:///path 

ですから、実際にしたい:

NSURL *urlToPDF = [NSURL URLWithString:[NSString stringWithFormat:@"file:///%@", appDelegate.pdfString]]; 

...あなたのパスにする必要があり、スペースを持っている以外URLがエンコードされているので、は実際にです。

NSURL *urlToPDF = [NSURL URLWithString:[NSString stringWithFormat:@"file:///%@", [appDelegate.pdfString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]];