我正在尝试通过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。
然而,loadItem(forIdentifier:options:completionHandler :)方法似乎永远不会运行,甚至更多的是它内部的代码。
有没有人遇到过这个问题?我确定我错过了一些东西,但无法理解。
答案 0 :(得分:0)
将“ loadItem”更改为“ loadItemAsync”并以这种方式运行。我碰到了完全相同的问题,即完成块没有运行,但是当我调用“ loadItemAsync”而不是“ loadItem”时,它运行正常,我从我的JS文件中获取了所有输出。