gpt4 book ai didi

objective-c - Vfr-Reader 在 assert(range.location != NSNotFound) 上崩溃;

转载 作者:搜寻专家 更新时间:2023-10-30 20:24:50 25 4
gpt4 key购买 nike

我正在使用 this名为 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/Library/Developer/CoreSimulator/Devices/CC9412A6-9A95-4F46-89BA-8ECC13D0AF19/data/Containers/Bundle/Application/D2DC440B-F010-4575-93FD-3CB05BFF4F78/AppName.应用程序/PdfName.pdf"0x798c9b30

范围=位置=2147483647,长度=0

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

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

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

最佳答案

我遇到了同样的问题,所以我对库文件做了一些更改,这不应该是一个选项,但在这种情况下,我别无选择才能让它工作。因此,要使您的代码正常工作,请遵循以下说明:

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

关于objective-c - Vfr-Reader 在 assert(range.location != NSNotFound) 上崩溃;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25997180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com