Vfr-Reader在断言时崩溃(range.location!= NSNotFound);

时间:2014-09-23 14:04:23

标签: objective-c pdf ios8 xcode6gm vfr-reader

我使用名为Vfr Reader的this开源控件在我的应用中显示pdf文件。所有这些都在iOS 7上运行。当我尝试打开pdf文件时iOS更新应用程序崩溃。

我正在使用此代码初始化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 / Library / Developer / CoreSimulator / Devices / CC9412A6-9A95-4F46-89BA-8ECC13D0AF19 / data / Containers / Bundle / Application / D2DC440B-F010-4575-93FD-3CB05BFF4F78 /AppName.app/PdfName.pdf" 0x798c9b30

range = location = 2147483647,length = 0

applicationPath = @" / Users / GuruTraxiOSDev01 / Library / Developer / CoreSimulator / Devices / CC9412A6-9A95-4F46-89BA-8ECC13D0AF19 / data / Containers / Data / Application / 32D612DE-FFD2-4C1E-B403-CDA177B460A6& #34; 0x798b46b0

我已经确认文件的存在。 任何人都可以帮忙!

编辑:This问题解决了文件加载崩溃问题。但应用程序仍然崩溃 CGContextDrawPDFPage(context,thePDFPageRef);

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,所以我对图书馆文件进行了一些更改,这不应该是一个选项,但在这种情况下,我没有任何选择让它工作。因此,要使代码工作,请遵循以下说明:

转到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;
}

答案 1 :(得分:0)

如果你有一个断点只是删除它,那就解决它了。

断点导航器=>选择断点然后删除