Finder共享扩展:从NSItemProvider获取预览图像

时间:2017-10-02 14:07:27

标签: swift macos cocoa finder macos-high-sierra

我创建了一个在选择文件时使用的Finder共享扩展程序。我想显示您正在共享的文件的图像预览(例如,您在消息和Twitter Finder共享扩展中看到的内容)。

在我的共享扩展程序的视图控制器的loadView方法中,我这样做:

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

        attachment.loadPreviewImage(options: nil, completionHandler: { (item, error) in
            if error != nil {
                //handle error...
            } else if let img = item as? NSImage {
                //put image preview in my "share sheet"...
            }
        })

    }
}

问题是当我一直遇到错误状态时。我得到的错误是:

错误域= NSItemProviderErrorDomain代码= -1000"无法加载预览。" UserInfo = {NSLocalizedDescription =无法加载预览。}

为了它的价值,我能够成功调用attachment.loadItem()并使用该文件。但此时我并不真正关心对文件本身做任何事情,我只想要一个代表文件的缩略图,理论上这个方法应该给我...

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我处于同样的境地。阅读手册后,我想这就是原因。

“加载项目提供者所代表的项目的预览图像。”

但是,不强制项目提供者必须提供预览。因此,错误只是表示项目提供者无法提供预览。你应该自己做。