在Swift 3.0中使用NSData获取核心数据

Jas*_*ady 11 uiimage nsdata ios swift3 ios10

所以以前,在Swift 2.2中我可以使用 Entity.image = UIImagePNGRepresentation(UIImage(named: "Image Name")!)

但现在在Swift 3.0中,似乎我们现在必须使用额外的步骤.Entity.image = NSData(data: UIImagePNGRepresentation(UIImage(named: "Image Name")!))或者相当于的对象UIImage(name: "Image Name")

是否有雨燕3.0一种新的方式,从去UIImageNSData

Qua*_* Hà 33

试试这个:

if let img = UIImage(named: "hallo.png") {
    let data = UIImagePNGRepresentation(img) as NSData?
}
Run Code Online (Sandbox Code Playgroud)


Kru*_*nal 7

为了安全执行代码,使用带有Data的if-let块,因为函数UIImagePNGRepresentation返回,可选值.

if let img = UIImage(named: "Hello.png") {
    if let data:Data = UIImagePNGRepresentation(img) {
       // Handle operations with data here...         
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:数据是Swift 3类.在Swift 3中使用Data而不是NSData

通用图像操作(如png和jpg):

if let img = UIImage(named: "Hello.png") {
        if let data:Data = UIImagePNGRepresentation(img) {
               handleOperationWithData(data: data)     
        } else if let data:Data = UIImageJPEGRepresentation(img, 1.0) {
               handleOperationWithData(data: data)     
        }
}

*******
func handleOperationWithData(data: Data) {
   // Handle operations with data here...
}
Run Code Online (Sandbox Code Playgroud)

通过使用扩展名:

extension UIImage {

    var pngRepresentationData: Data? {
        return UIImagePNGRepresentation(self)
    }

    var jpegRepresentationData: Data? {
        return UIImageJPEGRepresentation(self, 1.0)
    }
}

*******
if let img = UIImage(named: "Hello.png") {
      if let data = img.pngRepresentationData {
              handleOperationWithData(data: data)     
      } else if let data = img.jpegRepresentationData {
              handleOperationWithData(data: data)     
      }
}

*******
func handleOperationWithData(data: Data) {
     // Handle operations with data here...
}
Run Code Online (Sandbox Code Playgroud)