我实现了一个将图像发送到服务器进行计算的共享扩展。 除了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
类型。知道为什么会在其他应用程序运行时发生这种情况吗?
感谢您的帮助。
答案 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)
}