CKAsset(NSData)与UIWebView共享与ActivityViewController

问题描述:

我有PDF文件作为CKAssets,这是调用和呈现在UIWebView没有问题。我已经设法操作代码,因此CKAsset将显示在ActivityViewController中,但这是在func方法中,我希望将此部分分配给一个Action按钮。我的问题是如何在函数中调用几行?或者在func之外有足够的引用来使动作按钮有效?CKAsset(NSData)与UIWebView共享与ActivityViewController

这里是功能代码功能 -

func queryRecord() { 

    let container = CKContainer.default() 
    let publicDatabase = container.publicCloudDatabase 
    let predicate = NSPredicate(format: "recordID = %@", CKRecordID(recordName : documentID)) 
    let query = CKQuery(recordType: "Documents", predicate: predicate) 

    publicDatabase.perform(query, inZoneWith: nil, completionHandler: ({results, error in 

     if (error != nil) { 
      DispatchQueue.main.async() { 
       self.notifyUser("Cloud Access Error", message: error!.localizedDescription) 
      } 

     } else { 
      if results!.count > 0 { 

       let record = results![0] 
       print(record) 

       DispatchQueue.main.async() { 

       let docTitle = record.object(forKey: "documentName") as! String 

        self.title = "\(docTitle)" 

        let docType = record.object(forKey: "documentType") as! String 

        if docType == "PDF" || docType == "pdf" { 


        if let asset1 = record.object(forKey: "documentFile") as? CKAsset { 
         let doc1Data : NSData? = NSData(contentsOf:asset1.fileURL) 
         self.docWebView.load(doc1Data! as Data, mimeType: "application/pdf", textEncodingName: "UTF-8", baseURL: NSURL() as URL) 
         let filenameURL = [(asset1.fileURL)] 

         let activityController = UIActivityViewController(activityItems: filenameURL, applicationActivities: nil) 
         self.present(activityController, animated: true, completion: nil) 

         } 

        } else { 

我试图引用filenameURL代码之外,但它不承认filenameURL是无类的成员。

我想通了(我认为)。这里去 -

我改变

let filenameURL = [(asset1.fileURL)] 

self.filenameURL = [(asset1.fileURL)] 

然后加入

var filenameURL : Any? 

到ViewController类。这让我相关的代码添加到actionButton -

@IBAction func activityVCButton(_ sender: UIBarButtonItem) { 
     let activityController = UIActivityViewController(activityItems: (filenameURL as? [Any])!, applicationActivities: nil) 
     self.present(activityController, animated: true, completion: nil) 
     } 

我觉得关键,我似乎丢失是任何?,但我很高兴,如果有更多的东西根本我是要纠正失踪。