このコードを使用して、共有拡張機能から画像を抽出し、それをアプリ グループに作成したディレクトリに書き込みます。
let content = self.extensionContext!.inputItems[0] as! NSExtensionItem
let contentType = kUTTypeImage as String
for attachment in content.attachments as! [NSItemProvider] {
if attachment.hasItemConformingToTypeIdentifier(contentType) {
attachment.loadItem(forTypeIdentifier: contentType, options: nil) { data, error in
// from here
if error == nil {
let url = data as! NSURL
let originalFileName = url.lastPathComponent
if let imageData = NSData(contentsOf: url as URL) {
let img = UIImage(data:imageData as Data)
if let data = UIImagePNGRepresentation(img!) {
// write, etc.
}
}
}
}
何もかもうまくいっています。
私が知りたいのは、いくつかのコードを減らすことができるかどうかです: 特に、 の後if error == nil
、私:
- にデータをキャストし
NSURL
ます。 NSURL
を取得するために使用しますNSData
。NSData
を取得するために使用しますUIImage
。UIImage
を取得するために使用しますUIImagePNGRepresentation
。
imageData 変数の作成を回避する以外に、より少ない手順で同じ目標を (安全に) 達成する方法はありませんか?