当前位置:  开发笔记 > 前端 > 正文

iPhone UIWebView:loadData不适用于某些类型(Excel,MSWord,PPT,RTF)

如何解决《iPhoneUIWebView:loadData不适用于某些类型(Excel,MSWord,PPT,RTF)》经验,为你挑选了1个好方法。

我的任务是在OS 3.x的iPhone上显示支持的文档类型,例如.pdf,.rtf,.doc,.ppt,.png,.tiff等.

现在,我已将这些文件仅加密存储在磁盘上.出于安全考虑,我希望避免将它们以未加密的方式存储在磁盘上.

因此,我更喜欢使用loadData:MIMEType:textEncodingName:baseURL:而不是loadRequest:显示文档,因为loadData允许我传递NSData对象中的内容,即我可以在内存中解密文件而不需要将其存储在磁盘上,因为在使用时需要它loadRequest.

问题是loadData似乎不适用于所有文件类型:

测试显示所有图片类型似乎都可以正常工作,而PDF则更好,而更复杂的类型则不然.我得到一个错误,如:

NSURLErrorDomain Code=100
NSURLErrorDomain Code=102

WebView似乎需要一个真正有效的URL来访问文档作为文件,尽管我已经通过NSData对象提供了所有内容.

这是我用来显示内容的代码:

[webView loadData:data MIMEType:type textEncodingName:@"utf-8" baseURL:nil];

mime-type被正确设置,例如为.doc文件的"application/msword".

有谁知道如何loadData使用loadRequest支持的所有类型?或者,是有一些方法可以让我知道哪些类型做的工作是肯定的(即由苹果官方认可)与loadData?然后我可以双重工作,只为loadData不喜欢的情况创建一个临时未加密的文件.

更新

看起来我不是第一个碰到这个的人.看这里:

http://osdir.com/ml/iPhoneSDKDevelopment/2010-03/msg00216.html

所以,我猜,这是现状,我无能为力.

有人提出了可能有效的解决办法:

http://osdir.com/ml/iPhoneSDKDevelopment/2010-03/msg00219.html

基本上,我们的想法是提供一个服务于文件的小型http服务器(在我的情况下来自内存),然后使用loadRequest.这可能是内存密集型的,因为服务器和webview可能都将内存中的全部内容保存为两个副本,而不是使用loadData,两者都希望共享相同的数据对象.(请注意,我必须将解密数据保存在内存中,这就是重点).



1> Jesse Naughe..:

我遇到了一个非常类似的问题(我从服务器获取我的文件)然后看到你的帖子并认为这是一个死胡同,然后只是偶然开始在设备上进行实验(在这个例子中是iPad)并且它在我工作时有效给了baseURL我用来从服务器上获取它并且它工作但是在模拟器上不起作用.我会尝试,否则我会向Apple提交错误报告.


啊! 设置非零baseURL很重要.有了它,它现在甚至可以在模拟器中使用msword文件,运行iOS 4.0或3.2,以及我的iPhone4和iPad.现在我需要一个OS 3.0设备来检查它现在是否也能正常工作.不幸的是,我最近将iPod Touch升级到4.0.愚蠢的举动,现在结果证明了.无论如何,你刚刚获得了第一个积分!欢迎:)
推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有