首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将CKAsset加载到UIWebView

将CKAsset加载到UIWebView
EN

Stack Overflow用户
提问于 2017-09-06 02:51:24
回答 2查看 53关注 0票数 0

我正在尝试加载一个作为CKAsset存储在publicDatabase中的PDF文件,代码在去年发布的现有应用程序上工作得很好。但是,我现在得到以下错误

无法在强制中将'NSData‘类型的值转换为'Data’类型

这是代码-

代码语言:javascript
复制
if  docType == "PDF" || docType == "pdf" {
   if let asset1 = record.object(forKey: "documentFile") as? CKAsset {
      let doc1Data : NSData? = NSData(contentsOf:asset1.fileURL)
      let path = (NSTemporaryDirectory() as NSString).appendingPathComponent(filename)
      let fileURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(filename)
       do {
       try doc1Data!.write(to: URL(fileURLWithPath: path), options: .atomic)
       } catch {
       print(error)
       }
       self.docWebView.load(doc1Data! as Data, mimeType: "application/pdf", textEncodingName: "UTF-8", baseURL: NSURL() as URL)
       self.filenameURL = [(fileURL)]
}

我相信一定有一个简单的解释,但我看不出问题所在

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-09-06 05:06:16

尝试更改以下行:

代码语言:javascript
复制
let doc1Data : NSData? = NSData(contentsOf:asset1.fileURL)

代码语言:javascript
复制
let doc1Data = NSData(contentsOf:asset1.fileURL)
票数 0
EN

Stack Overflow用户

发布于 2017-09-06 07:03:43

答案似乎很简单,将加载数据更改为loadRequest,并引用从CKAsset获得的文档的URL。

代码语言:javascript
复制
if  docType == "PDF" || docType == "pdf" {
if let asset1 = record.object(forKey: "documentFile") as? CKAsset {
let doc1Data : NSData! = NSData(contentsOf:asset1.fileURL)
let path = (NSTemporaryDirectory() as NSString).appendingPathComponent(filename)
do {
   try doc1Data!.write(to: URL(fileURLWithPath: path), options: .atomic)
   let url = URL(fileURLWithPath: path)
   let urlRequest = URLRequest(url: url)
   self.docWebView?.loadRequest(urlRequest)
  } catch {
   print(error)
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46061553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档