- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 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/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
NSNotFound 到底是多少? 根据 this帖子,它是 NSIntegerMax。(虽然我在 XCode 的 iOS 9.3 上找不到。) 那么在64位系统中,应该是2^64-1还是2^63-1
NSNotFound 的 Xcode 文档非常困惑: 上面写着“在 iOS 2.0 到 8.4 中可用”和“可用性:iOS 8.1 到 8.0”。所以... 8.0之前可以用吗?还是9.0+?另外,如
我需要知道是否有一种方法可以表明在 Java Android 中找不到 int 类型。我正在编写一个android应用程序,它实际上是首先为Iphone编写的,并且有一个小问题。在某些时候,我必须检查
因为我将一个 Integer 值存储到 NSUserDefaults 中,因为它在很多地方都被使用过。第一次它工作正常但是当我关闭我的应用程序并再次打开它时我检查用户是否已经选择了过去 feom NS
在上面的屏幕截图中,您可以看到 rangeOfString 返回了字符串“Why was #ThisIsACoup trending? - BBC News”中“DEnt”的位置 我希望它返回 NSN
我通过 Antony 找到了这个解决方案用于验证 URL。 - (BOOL)isValidURL { NSUInteger length = [self length]; // Emp
如果我有一个返回 CGFloat 的方法并且该方法找不到预期的数字怎么办,我想返回类似 NSNotFound 的东西,但那是一个 NSInteger。 最佳实践是什么? 最佳答案 您可以使用不是数字(
在向一些 Objective-C 代码添加桥接 header 后,我开始收到有关 NSNotFound 是不明确引用的编译器错误。我的猜测是它可以用某种模块前缀来修复... 最佳答案 是的。将其更改为
通过查看 NSTextCheckingResult 的文档,我的印象是如果在 NSRegularExpression 搜索中找不到匹配项,则 NSCheckingResult 的范围属性> 将被设置为
你好,我对 NSCalendar 的 rangeOfUnit() 方法有疑问。我得到 NSNotFound 值,而我期望值在 范围内(一个月中的周数)。真正让我担心的是它依赖于平台(不适用于 iOS
NSNotFound 定义为 NSIntegerMax,定义为 LONG_MAX。 NSRange.location 定义为 NSUInteger。 某些 Foundation 方法返回一个 NSRa
我有一个 nsmutablearray,我在一个 nsarray 的 for 循环中向它添加对象。我希望它添加对象,直到它从 NSArray 到达 indexOfObject: 中的 NSNotFou
我正在为 NSArray 开发一个类别,我实现的其中一个函数旨在返回数组中的字符串数(或不是数字)。这一切都很好,但我的问题是关于在输入数组的计数为零的情况下使用 NSNotFound 作为返回。 A
NSNotFound被定义为NSIntegerMax,在32位和64位有不同的值,这给持久化和分布式环境带来了很多不便。为什么不定义为-1呢? PS,在 ObjC 和 Cocoa 中,有些 index
我正在检查我的一个应用程序中的一些旧代码,并修复可能存在问题的区域中的代码。 我看到很多旧代码使用... NSRange range = //determine range here.... if(r
我正在使用 this名为 Vfr Reader 的开源控件可在我的应用程序中显示 pdf 文件。一切都在 iOS 7 上运行。在 iOS 更新后,当我尝试打开 pdf 文件时应用程序崩溃。 我正在使用
我有这个代码: NSIndexSet *indexes = [anOrderedSet indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx
我是一名优秀的程序员,十分优秀!