0

我正在实现一个将图像发送到服务器进行计算的共享扩展。除了我的进度条问题,我无法使用 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中。

该项目似乎是 type image。知道为什么在它适用于其他应用程序时会发生这种情况吗?

谢谢你的帮助。

4

1 回答 1

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)
                        }
于 2017-08-16T13:07:51.353 回答