我目前正在构建一个接受URL的共享扩展程序。作为其中的一部分,我已按照以前的问题中概述的方式自定义了我的共享屏幕,以创建全屏视图控制器。这一切都正常工作。但是在默认的共享composer视图中,我注意到有一个网页的预览图片。我正在尝试在我的扩展程序中访问它,但似乎无法获取它。
具体来说,我一直在尝试使用的方法是
loadPreviewImage
https://developer.apple.com/reference/foundation/nsitemprovider/1403925-loadpreviewimage
您会在文档中看到,完成处理程序的说明如下:completionHandler 带有结果的完成处理程序块。此块的第一个参数必须是 NSData、NSURL、UIImage(在 iOS 中)或 NSImage(在 macOS 中)类型的参数,以接收图像数据。有关实现该块的更多信息,请参见 CompletionHandler。
然而,如果我尝试将此设置为我的完成块中的 UIImage,则会出现以下错误:
无法将类型'(UIImage,_) -> ()'的值转换为预期的参数类型 'NSItemProvider.CompletionHandler!'
以下是确认 itemProvider 是 NSItemProvider 实例的保护语句的示例代码。
itemProvider.loadPreviewImage(options: nil) { (image: UIImage, error) in
}
完成处理程序的文档说要将其设置为所需类型,它会尝试将数据强制转换为您指定的类型。有人见过这种情况吗?我不确定该怎么做,因为我看不出自己哪里做错了。
https://developer.apple.com/reference/foundation/nsitemprovider/completionhandler
如果其他方法都失败了,我会考虑使用一些Javascript从dom中获取图像,但我更喜欢苹果似乎提供的预览图像。
itemProvider.loadPreviewImage
的项目始终为零。 - cdf1982