首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CKAsset (NSData)到UIWebView以与ActivityViewController共享

CKAsset (NSData)到UIWebView以与ActivityViewController共享
EN

Stack Overflow用户
提问于 2017-03-08 08:31:31
回答 1查看 50关注 0票数 0

我有PDF文件作为CKAssets,这是调用和呈现在一个UIWebView没有问题。我已经成功地处理了代码,这样CKAsset就会出现在ActivityViewController中,但这是在func方法中,我希望将这一部分分配给一个操作按钮。我的问题是如何在一个函数中调用几行代码?或者在func之外有足够的引用来使操作按钮工作?

这是函数代码-

代码语言:javascript
复制
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不是该类的成员。

EN

回答 1

Stack Overflow用户

发布于 2017-03-08 09:26:01

我(我想)弄明白了。是这样的-

我变了

代码语言:javascript
复制
let filenameURL = [(asset1.fileURL)]

代码语言:javascript
复制
self.filenameURL = [(asset1.fileURL)]

然后添加了

代码语言:javascript
复制
var filenameURL : Any? 

添加到ViewController类。这使我能够将相关代码添加到actionButton中-

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

我认为我似乎遗漏的关键是Any?,但如果我遗漏了更基本的东西,我很高兴被纠正。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42660888

复制
相关文章

相似问题

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