访问ShareExtension

时间:2017-08-23 20:26:15

标签: ios swift share-extension

我正在尝试通过ShareExtension访问用户当前所在页面的网址和标题。

设置好后,我似乎无法在completionHandler中运行代码。

        if let item = extensionContext?.inputItems.first as? NSExtensionItem {
        if let attachments = item.attachments as? [NSItemProvider] {

            for attachment: NSItemProvider in attachments {

                print(attachment)

                    attachment.loadItem(forTypeIdentifier: kUTTypePropertyList as String, options: nil, completionHandler: {(dict, error) in


                        let itemDictionary = dict as! NSDictionary
                        let javaScriptValues = itemDictionary[NSExtensionJavaScriptPreprocessingResultsKey] as! NSDictionary
                        print(javaScriptValues)
                    })

            }
        }
    }

深入挖掘后,我知道代码执行就像for循环一样。附件属于PropertyList。

enter image description here

然而,loadItem(forIdentifier:options:completionHandler :)方法似乎永远不会运行,甚至更多的是它内部的代码。

有没有人遇到过这个问题?我确定我错过了一些东西,但无法理解。

1 个答案:

答案 0 :(得分:0)

将“ loadItem”更改为“ loadItemAsync”并以这种方式运行。我碰到了完全相同的问题,即完成块没有运行,但是当我调用“ loadItemAsync”而不是“ loadItem”时,它运行正常,我从我的JS文件中获取了所有输出。