Vfr-Reader аварийно завершает работу при утверждении (range.location!= NSNotFound);
Я использую этот элемент управления с открытым исходным кодом под названием Vfr Reader, чтобы показать файлы PDF в моем приложении. Все работало на iOS 7. После обновления iOS происходит сбой приложения, когда я пытаюсь открыть PDF-файл.
Я использую этот код для инициализации чтения PDF.
NSString *fileName = [[NSBundle mainBundle] pathForResource:@"PdfName" ofType:@"pdf"];
ReaderDocument *document = [ReaderDocument withDocumentFilePath:fileName password:nil];
if (document != nil)
{
ReaderViewController *readerViewController = [[ReaderViewController alloc] initWithReaderDocument:document];
readerViewController.delegate = self;
readerViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
readerViewController.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:readerViewController animated:YES completion:Nil];
}
Приложение вылетает в этой функции VFR
+ (NSString *)relativeFilePath:(NSString *)fullFilePath
{
assert(fullFilePath != nil); // Ensure that the full file path is not nil
NSString *applicationPath = [ReaderDocument applicationPath]; // Get the application path
NSRange range = [fullFilePath rangeOfString:applicationPath]; // Look for the application path
assert(range.location != NSNotFound); // **Crashes here**
return [fullFilePath stringByReplacingCharactersInRange:range withString:@""]; // Strip it out
}
При сбое отладчик показывает эти значения.
fullFilePath = @ "/ Users / GuruTraxiOSDev01 / Библиотека / Разработчик /CoreSimulator/ Устройства /CC9412A6-9A95-4F46-89BA-8ECC13D0AF19/data/Containers/Bundle/ Приложение /D2DC440B-F010-4575-93FD-3CB05NFame.Pame.Pame.Pame78.pdf" 0x798c9b30
диапазон = местоположение =2147483647, длина = 0
applicationPath = @ "/ Users / GuruTraxiOSDev01 / Библиотека / Разработчик /CoreSimulator/ Устройства /CC9412A6-9A95-4F46-89BA-8ECC13D0AF19/data/Containers/Data/Application/32D612DE-FFD2-4C1E-B403-CDA177B460A60xx0x0x
Я уже подтвердил существование файла. Может кто-нибудь помочь, пожалуйста!
РЕДАКТИРОВАТЬ: Этот вопрос решил сбой при загрузке файла. Но приложение все еще падает на CGContextDrawPDFPage(context, thePDFPageRef);
2 ответа
Я столкнулся с той же проблемой, поэтому внес некоторые изменения в библиотечные файлы, которые не должны быть опцией как таковой, но в этом случае у меня не было никакого выбора, чтобы заставить его работать. Чтобы заставить ваш код работать, следуйте инструкциям ниже:
Перейдите в файл ReaderDocument.m и внесите следующие изменения:
+ (NSString *)documentsPath
{
//Make changes to return the NSBundle path.
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSFileManager *fileManager = [NSFileManager new]; // File manager instance
NSURL *pathURL = [fileManager URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:NULL];
// return [pathURL path]; // Path to the application's "~/Documents" directory // Code changes.
return bundlePath;
}
Если у вас была точка останова, просто удалите ее, это решите для меня.
Навигатор точек останова => выбрать точку останова и удалить