i have a share-extension handling different kinds of formats, like images.
for attachment in content.attachments as! [NSItemProvider] {
if attachment.hasItemConformingToTypeIdentifier(kUTTypeImage as String) {
attachment.loadItem(forTypeIdentifier: kUTTypeImage as String, options: nil) { data, error in
if error == nil {
var contentData: Data? = nil
//data could be raw Data
if let data = data as? Data {
contentData = data
//data could be an URL
} else if let url = data as? URL {
contentData = try? Data(contentsOf: url)
}
//data could be an UIImage object (e.g. ios11 screenshot editor)
else if let imageData = data as? UIImage {
contentData = UIImagePNGRepresentation(imageData)
}
// proceed here with contentData
}
i came across now 3 different ways how the image data is provided in the loaditem-method as NSSecureCoding (in case of kUTTypeImage) and wonder if this is the right way to handle it and if i am missing other ways how images are represented.
It seems not defined how applications provide their image-data to a share extension.
Is there another (better) generic way to get to know what is coming via the data-variable (NSSecureCoding)? Generic call to a decoder?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…