5

我有一个共享扩展处理不同类型的格式,比如图像。

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

          }

我现在遇到了 3 种不同的方式如何在 loaditem-method 中将图像数据提供为 NSSecureCoding(在 kUTTypeImage 的情况下),我想知道这是否是处理它的正确方法,以及我是否缺少其他表示图像的方式。

似乎没有定义应用程序如何将其图像数据提供给共享扩展。

是否有另一种(更好的)通用方法来了解通过数据变量(NSSecureCoding)会发生什么?对解码器的通用调用?

4

0 回答 0