如何使用Swift将PFFile转换为UIImage?

3

如何使用Swift将PFFile转换为UIImage?

在这段代码中,应用程序从Parse获取文件,现在我想在UIImageView上显示它,但是我遇到了错误...

以下是我的代码...

 var ImageArray:UIImage = [UIImage]()
    var textArray:String = [String]()

     var query = PFQuery(className:"ClassName")

            query.findObjectsInBackgroundWithBlock {
                (objects: [AnyObject]?, error: NSError?) -> Void in

                if error == nil {


                    if let objects = objects as? [PFObject] {
                        for object in objects {
     //this works fine                       
self.textArray.append(object.valueForKey("Image")! as! String)



    //this does not work...
                            self.ImageArray.append(object.valueForKey("Image")! as! PFFile)
    //I get an error that says PFFile is not convertible to UIImage. How do i convert it?






                        }
                    }
                } else {
                    // Log details of the failure
                    println("Error: \(error!) \(error!.userInfo!)")
                }
3个回答

14

PFFile是任何类型文件的Parse表示。要获取“真实”的文件(如图像),需要调用getDataInBackgroundWithBlock方法。试一试:

if let userPicture = object.valueForKey("Image")! as! PFFile {
   userPicture.getDataInBackgroundWithBlock({
      (imageData: NSData!, error NSError!) -> Void in
         if (error == nil) {
            let image = UIImage(data:imageData)
            self.ImageArray.append(image)
         }
      })
}

我收到一个错误,说“PFData没有成员名为“getDataInBacgroundWithBlock”。 - nachshon fertel
1
我遇到了另一个错误,它说“无法调用'type({(imageData: NSData!, error NSError!) -> Void})'的'getDataInBackgroundWithBlock'参数列表”。请在提交答案之前进行测试。 - nachshon fertel
请在提问之前先使用谷歌搜索 :) https://dev59.com/z4nda4cB1Zd3GeqPFu6_ - Klevison

1

Swift 1.2+ 版本

        if let userPicture = PFUser.currentUser()!.valueForKey("Image") as? PFFile {
            userPicture.getDataInBackgroundWithBlock {
                (imageData: NSData?, error: NSError?) -> Void in

                if error == nil {
                    let image = UIImage(data:imageData!)
                    self.ImageArray.append(image)
                }else{
                    print("Error: \(error)")
                }
            }
        }

1
使用Swift 3在Parse上。
  if let photo = obj.file as? PFFile {
       photo.getDataInBackground(block: {
          PFDataResultBlock in
          if PFDataResultBlock.1 == nil {//PFDataResultBlock.1 is Error
                    if let image = UIImage(data:PFDataResultBlock.0!){
                        //PFDataResultBlock.0 is Data
                        photoCell.attachedPicture.image = image
                    }

                }
            })
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接