2

我正在尝试通过我的应用程序的 ShareExtension 访问用户当前所在页面的 url 和标题。

设置完所有内容后,我似乎无法让 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。

在此处输入图像描述

然而 loadItem(forIdentifier:options:completionHandler:) 方法似乎永远不会运行,更何况它里面的代码。

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

4

1 回答 1

1

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

于 2019-10-05T15:09:09.837 回答