2017-09-05 80 views
0

我试图加载存储在公共数据库中的PDF文件作为CKAsset,代码在去年发布的现有应用程序中运行良好。不过,我现在得到以下错误将CKAsset加载到UIWebView中

无法将类型“的NSData”的价值强制

这里键入“数据”是代码 -

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)] 
} 

我敢肯定,必须有一个简单的解释,但我不能看到问题

在此先感谢。

+0

唉我仍然得到错误 - 无法将类型'NSData'的值转换为在'co'中键入'数据' ercion涉及到'self.docWebView.loadData(doc1Data as Data ?, MIMEType:“application/pdf”,textEncodingName:“UTF-8”,baseURL:NSURL()为URL)'代码行 – Bowcaps

回答

0

尝试改变以下线:

let doc1Data : NSData? = NSData(contentsOf:asset1.fileURL) 

let doc1Data = NSData(contentsOf:asset1.fileURL) 
+0

唉,我仍然得到错误 - 无法将类型'NSData'的值转换为与'self.docWebView.loadData(doc1Data as Data?,MIMEType:“application/pdf”,textEncodingName:“UTF-8”,baseURL: NSURL()作为URL)'代码行 – Bowcaps

0

这样看来答案很简单,改变负载数据到的loadRequest并引用文档的URL已经获得它从CKAsset

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) 
    } 
}