如何快速将 PFFile 转换为 UIImage?

Posted

技术标签:

【中文标题】如何快速将 PFFile 转换为 UIImage?【英文标题】:How to convert an PFFile to an UIImage with swift? 【发布时间】:2015-05-22 15:26:47 【问题描述】:

在这段代码中,应用程序正在从解析中获取文件,现在我希望它显示在 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!)")
                

【问题讨论】:

【参考方案1】:

PFFile 是任何类型文件的解析表示。要获取“真实”文件(图像),您需要调用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” 我收到另一个错误,上面写着“无法调用 'getDataInBackgroundWithBlock; 带有类型的参数列表 ( (imageData: NSData!, error NSError!) -> Void” 请在将其提交为回答。 拜托,谷歌之前问什么:) ***.com/questions/29761799/…【参考方案2】:

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)")
                
            
        

【讨论】:

【参考方案3】:

在 Parse 上使用 Swift 3。

  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
                    

                
            )
        

【讨论】:

以上是关于如何快速将 PFFile 转换为 UIImage?的主要内容,如果未能解决你的问题,请参考以下文章

应用启动时加载用户配置文件,选择视图时崩溃,将 PFFile 转换为 UIImage

在for循环中将PFFile数组转换为UIImage返回空数组Swift

在 Uiimage 中将视频检索为 PFFile

如何在目标 c 中将 PFFILE 设置为本地 UIImage

上传 UIImage 到 Parse

PFFile 保存在哪里?