Невозможно загрузить изображения из приложения Twitter в рамках общего ресурса
Я реализую расширение общего доступа, которое отправляет изображения на сервер для вычислений. Помимо проблем с индикатором выполнения, я не могу использовать изображения из приложения 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 ответ
Мне удалось это исправить с помощью следующего кода, который учитывает различные способы передачи фотографии 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)
}