NSString не преобразуется в NSURL (NSURL равно нулю) - PullRequest
4 голосов
/ 21 марта 2012

Я пытаюсь преобразовать NSString (путь к файлу в каталоге документов) в NSURL, но NSURL всегда нулевой. Вот мой код:

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)

Я думаю, что часть проблемы может заключаться в том, что строка NSS содержит косые черты / и тире -. Что я делаю неправильно? Спасибо.

Ответы [ 2 ]

6 голосов
/ 21 марта 2012

Дело в том, что appDelegate.pdfString не является действительным URL, это путь. файл URL выглядит так:

file://host/path

или для локального хоста:

file:///path

Итак, вы действительно хотите:

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

... за исключением того, что в вашем пути есть пробелы, которые необходимо кодировать в URL, так что вы на самом деле хотите:

NSURL *urlToPDF = [NSURL URLWithString:[NSString stringWithFormat:@"file:///%@", [appDelegate.pdfString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]];
6 голосов
/ 21 марта 2012

Почему бы вам не создать путь к файлу таким способом, который есть.

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

А затем создайте свой URL с путем к файлу, как это.

NSURL *url = [NSURL fileURLWithPath:filePath];
...