无法在共享扩展程序中从Twitter应用程序加载图像

时间:2017-06-26 19:31:48

标签: ios swift twitter share-extension

我实现了一个将图像发送到服务器进行计算的共享扩展。 除了progress bar issues之外,我还无法使用Twitter应用中的图片。以下是我正在使用的代码,该代码适用于许多其他第三方应用。

if let inputItem = extensionContext!.inputItems.first as? NSExtensionItem {
            if let itemProvider = inputItem.attachments?.first as? NSItemProvider {
                if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeImage as String) {
                    itemProvider.loadItem(forTypeIdentifier: kUTTypeImage as String) { [unowned self] (imageData, error) in
                        let url = imageData as! URL
                        self.sendToServer(localUrl: url)
                    }
                }
            }
        }

我遇到的错误如下:Could not cast value of type 'NSConcreteData' (0x1a8d45700) to 'NSURL' (0x1a8d36a10)并且代码let url = imageData as! URL的这一部分出现。

该项似乎是image类型。知道为什么会在其他应用程序运行时发生这种情况吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我设法通过使用以下代码来解决这个问题,该代码考虑了itemProvider传递照片的不同方式。

itemProvider.loadItem(forTypeIdentifier: kUTTypeImage as String){ [unowned self] (data, error) in
                            let myImage: UIImage?
                            switch data {
                            case let image as UIImage:
                                myImage = image
                            case let data as Data:
                                myImage = UIImage(data: data)
                            case let url as URL:
                                let imageData = NSData(contentsOf: url.absoluteURL)
                                myImage = UIImage(data: imageData! as Data)
                            default:
                                //There may be other cases...
                                print("Unexpected data:", type(of: data))
                                myImage = nil
                            }
                            self.sendToServer(imageData: myImage!, imageName: myImageName)
                        }