将NSSecureCoding转换为NSData-Xcode-Swift

问题描述 投票:4回答:2

我有一些代码可以创建一个称为“ content”的NSSecureCoding变量,我想将该变量转换为NSData,然后可以将其制成UIImage或发送到本地服务器。如何正确转换?我想要这个用于我在iOS应用中制作的共享扩展程序,因此当您在照片上按共享时,它将获取照片内容并将其转换为NSData。这是我的代码:

    inputItem = extensionContext!.inputItems.first as NSExtensionItem
    attachment = inputItem.attachments![0] as NSItemProvider
    if (attachment.hasItemConformingToTypeIdentifier(kUTTypeImage as String)){
        attachment.loadItemForTypeIdentifier(kUTTypeImage as String,
            options: nil,
            completionHandler: {(content, error: NSError!) in

                //insert code to convert "content"(NSSecureCoding) to NSData variable

        })
    }
ios objective-c xcode swift nsdata
2个回答
2
投票

有点迟,但是今天这件事发生在我身上,我这样解决了,在completionHandler内:

  if let data = content {
        self.imageData = UIImage(data: NSData(contentsOfURL: data as! NSURL)!)                      
  }

imageData是UIImage类型。


0
投票
DispatchQueue.global().async {

    attachment.loadItem(forTypeIdentifier: kUTTypeImage as String, options: nil, completionHandler: { (item, error) in
        if let error = error {
            print(error.localizedDescription)
            return
        }

        var image: UIImage?

        if item is UIImage {
            image = item as? UIImage
        }

        if item is URL {
            let data = try? Data(contentsOf: item as! URL)
            image = UIImage(data: data!)!
        }

        if item is Data {
            image = UIImage(data: item as! Data)!
        }

        if let image = image {
            DispatchQueue.main.async {
                // image here
            }
        }

    })
}

© www.soinside.com 2019 - 2024. All rights reserved.