iOS 自定义共享扩展:加载选定的图像

mic*_*nin 3 ios swift ios-app-extension

我正在为我的应用程序开发一个共享扩展程序,以便能够使用它直接从库中共享图像。我有一个视图控制器和布局设置,但我正在努力让所选图像显示在UIImageView视图控制器内部。

目前,我的getImage()情况如下:

func getImage() {
    if let inputItem = extensionContext!.inputItems.first as? NSExtensionItem {
        if let itemProvider = inputItem.attachments?.first as? NSItemProvider {
            itemProvider.loadItem(forTypeIdentifier: kUTTypeJPEG as String) { [unowned self] (imageData, error) in
                if let item = imageData as? Data {
                    self.imageView.image = UIImage(data: item)

                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...但图像未加载。我在这里做错了什么?

mic*_*nin 5

发现问题了。原来我需要先做一个类型标识符一致性检查:

func getImage() {
    if let inputItem = extensionContext!.inputItems.first as? NSExtensionItem {
        if let itemProvider = inputItem.attachments?.first as? NSItemProvider {
            // This line was missing
            if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeJPEG as String) { 
                itemProvider.loadItem(forTypeIdentifier: kUTTypeJPEG as String) { [unowned self] (imageData, error) in
                    if let item = imageData as? Data {
                        self.imageView.image = UIImage(data: item)
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)