swift - Finder 共享扩展 : Getting a preview image from NSItemProvider

标签 swift macos cocoa finder macos-high-sierra

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

在我的共享扩展的 View Controller 的 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=无法加载预览。}

就其值(value)而言,我能够成功调用attachment.loadItem()并使用该文件。但此时我真的不在乎对文件本身做任何事情,我只想要一个代表文件的缩略图,理论上这个方法应该给我......

有什么想法吗?

最佳答案

我也遇到同样的情况。看完说明书,我想原因是这样的。

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

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

关于swift - Finder 共享扩展 : Getting a preview image from NSItemProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46527135/

相关文章:

swift - 有什么方法可以将 Xcode 中的长字符串换行?

macos - 使用身份验证运行 MongoDB

Swift:将击键转发到不同的进程

objective-c - 找不到 Cocoa/Cocoa.h(错误)

ios - 不同版本的 iOS 上的 EXC_BREAKPOINT

ios - 在 iOS 中重新加载 tableview 部分时出现残像

ios - 运行 Swift 应用时出现 Segmentation Fault 11

macos - 如何从 Mac OS X Dock 中隐藏应用程序图标

mysql - 升级 MySQL 后 MAMP MySQL 数据库消失了

objective-c - 主窗口关闭时 Cocoa 应用程序似乎崩溃