Задача C - Не удается прочитать файл в каталоге документов или кэш в Iphone - PullRequest
0 голосов
/ 30 сентября 2011

В своей работе я просто хочу прочитать загруженный PDF на устройстве iphone

Сначала я попытался использовать каталог «bundleRoot», он работает в симуляторе, но не на устройстве. Сейчас я просто тестирую в симуляторе каталог документов или кэш.

Как я могу получить доступный для записи путь на iPhone?

После прочтения вышеупомянутой темы,

Я пытался использовать каталог документов или кэш.

Вот мой код в поиске пути для записи

/ ********************************************** ******************************** /

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error;

if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO) {
    [[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
}


NSString *path_to_file = [cachePath stringByAppendingPathComponent:@"testing6.pdf"];

/ ********************************************** ******************************** /

Я могу найти загруженный файл и получить размер в этом каталоге, но не могу прочитать файл, используя следующий код:

            pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);

    page = CGPDFDocumentGetPage(pdf, 1);
    CGPDFPageRetain(page);

    CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);

Возвращаемое значение pageRect.size.width равно 0

После того, как я распечатал путь загрузки и получения файла, также:

/ Пользователи / ITDEV / Библиотека / Поддержка приложений / iPhone Simulator / 4.3.2 / Приложения / 806ED359-70F8-4C07-996F-6AFC959B3FC7 / Библиотека / Кэши / testing6.pdf

Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2011

Если все остальные ответы не будут работать, попробуйте использовать NSBundle, как показано ниже:

NSString *path = [[NSBundle mainBundle] pathForResource:@"myfilename" ofType:@"pdf"];
NSLog("path : %@",path);

Та же проблема, с которой я столкнулся, и я обнаружил, что мой plist-файл не был в каталоге Documents, но вместо этого он показывает мне путьмое приложение, а затем он показывает файл MYAppName.app/myPlist.plist.Это означает, что файл приложения содержит мой plist-файл в своем собственном пакете, т.е. MainBundle.

0 голосов
/ 30 сентября 2011

Вы можете прочитать файл в UIWebView.

И, используя код ниже, вы можете открыть файл.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error;

if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO) {
    [[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
}


NSString *path_to_file = [cachePath stringByAppendingPathComponent:@"testing6.pdf"];

NSURL *targetURL = [NSURL fileURLWithPath:path_to_file];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[YourWebViewName loadRequest:request];

Не забудьте соединить IBOutlet вашего веб-просмотра с UIWebview файла пера.

...