2017-03-08 4 views
0

私はPDFファイルをCKAssetsとして持っていますが、それは問題なくUIWebViewで呼び出され、提示されます。私はCKAssetがActivityViewControllerに表示されるようにコードを操作することができましたが、これはfuncメソッド内にあり、この部分をActionボタンに割り当てたいと思います。私の質問は、私は関数内でいくつかの行を呼び出すことができますか?アクションボタンを機能させるためにfuncの外部に十分な参照を持っていますか?ここActivityViewControllerと共有するためのUIWebViewへのCKAsset(NSData)

がFUNCコードである -

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 { 

Iは、コード外filenameURLを参照しようとしているが、それはfilenameURLクラスのいかなるメンバーではないことを認識しません。

答えて

0

私はそれを理解しました(私は思う)。ここに行く -

私は

self.filenameURL = [(asset1.fileURL)] 

let filenameURL = [(asset1.fileURL)] 

を変更し、その後のViewControllerクラスに

var filenameURL : Any? 

を追加しました。私はactionButtonに関連するコードを追加することができ、どの -

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

私は欠けているように見えた鍵は、どれだったと思う?私がいたより根本的な何かがあった場合、私は修正することに満足しています行方不明

関連する問題