我有一个名为documentVIEwController的QLPrevIEwController子类(从现在起名为DVC)来显示它们.
应用程序的工作流程:
– 用户单击文档的名称并按下DVC以显示文档.
– DVC离线下载文件并在完成后显示.
(因此,下载http URL,脱机存储,并返回脱机URL)
奇怪的是,只有pdf文件正在使用脱机URL,其余的崩溃..(虽然它适用于在线链接)
我做了一些测试,当我在离线链接之前放置file://应用程序没有崩溃但是DVC正在向我提供有关该文件的一些信息(就像它是一个excel 97-2004文档).
所以一些信息被转移,但我无法弄清楚问题是什么.
这里有一些截图,然后是一些代码.
码:
请注意,document是一个模型类,其文档属性包括ID,name,file type和url.
//DVC QLPrevIEwController dataSource method for returning url- (ID <QLPrevIEwItem>) prevIEwController: (QLPrevIEwController *) controller prevIEwItemAtIndex: (NSInteger)index{ [SaveHelper savedocumentfileAndPropertyWithdocument:document]; //[SaveHelper getdocumentfileWithdocument:document]; without file:// //if I return document.documentUrl it is working with all files except iworks files) return [SaveHelper getdocumentfileAsPathWithdocument:document]; //with file://}//SaveHelper methods+ (Nsstring *)documentfilePathWithdocument:(document *)document{ return [[self documentfilePath] stringByAppendingPathComponent:[Nsstring stringWithFormat:@"%@%d.%@",document_file_PREFIX,document.documentID,document.documentType]];}+ (NSURL *)savedocumentfileAndPropertyWithdocument:(document *)document{ if([self savedocumentPropertyWithdocument:document]) { return [self savedocumentfileWithdocument:document]; } return nil;}+ (NSURL *)savedocumentfileWithdocument:(document *)document{ NSData *data = [NSData dataWithContentsOfURL:document.documentURL]; Nsstring *fullPath = [self documentfilePathWithdocument:document]; if([[NSKeyedArchiver archivedDataWithRootObject:data] writetofile:fullPath atomically:YES]) { return [NSURL fileURLWithPath:fullPath]; } return nil;}+ (NSURL *)getdocumentfileWithdocument:(document *)document{ return [NSURL fileURLWithPath:[self documentfilePathWithdocument:document]];}+ (NSURL *)getdocumentfileAsPathWithdocument:(document *)document{ return [NSURL fileURLWithPath:[@"file://" stringByAppendingPathComponent:[[self getdocumentfileWithdocument:document] absoluteString]]];}
如果需要更多代码,请说.
编辑:
记录通过’getdocumentfileAsPathWithdocument’方法传递的URL时:
url: file:/var/mobile/Applications/xx-xx/documents/documentfiles/file_20.pdfurl: file:/var/mobile/Applications/xx-xx/documents/documentfiles/file_80.docx
pdf文件正在工作而docx没有
当我尝试从本地存储加载图像(jpg)时,我得到一个带有此错误消息的黑屏:
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.5 (8L1)/Symbols/System/library/Frameworks/QuickLook.framework/displayBundles/Image.qldisplay/Image (file not found).warning: No copy of Image.qldisplay/Image found locally,reading from memory on remote device. This may slow down the deBUG session.
编辑:
webvIEw无法使用本地网址. pdf很好,但office文件给出了一条消息“无法读取文档,文件格式无效”. iWorks文档提供与quicklook相同的错误.我认为它在格式的保存和加载的某个地方,我把它们作为NSDATA使用但是之后没有提示iPad看它是否是例如word文档(只有扩展名).
解决方法 您尚未发布下载代码,但我相信问题就在那里.来自Pages(.pages扩展名)的文件不是实际文件,它们是捆绑包,即包含文件并在Finder中显示为单个项目的目录(在Finder中查找.pages文件,右键单击它并选择’显示内容“).下载.pages文件实际上就像下载一个目录:它取决于Web服务器你获得了什么样的结果,但它很可能是一个错误页面.您可以检测到它是.pages文件并尝试手动下载其所有内容,但您必须研究文件的结构以查看是否可能,因为您不太可能从请求目录的内容网络服务器.
.ppt和.xls文件的结果对我来说是正常的;我认为iPad根本不可能预览MS Office文档.
编辑:道歉,我刚看到iOS可以预览MS Office文档.在下载过程中,文档可能会以某种方式损坏?您是否尝试将下载位置设置为应用程序的文档文件夹并启用iTunes文件共享?这样你就可以下载一些文件,将它们从你的设备中取出然后尝试在你的PC上打开它,看看它是否有效.
总结以上是内存溢出为你收集整理的iphone – 如何让QuickLook显示脱机文件?全部内容,希望文章能够帮你解决iphone – 如何让QuickLook显示脱机文件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)