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

时间:2014-12-26 04:59:20

标签: ios xcode swift uiviewcontroller parse-platform

我正在为应用中的用户创建自定义配置文件。我将个人资料图片存储为PFFile,密钥"profilePicture"位于我的User数据表中。我希望屏幕上的UIImageView成为我创建的表中的用户配置文件图像。

这是我的代码。我想我可以在viewDidLoad函数中执行此操作。

@IBOutlet var profPic: UIImageView! = UIImageView()

override func viewDidLoad() {
    super.viewDidLoad()

    var query = PFQuery(className:"User")

    query.includeKey("profilePicture")

    query.findObjectsInBackgroundWithBlock
    {
        (objects:[AnyObject]! , error:NSError!) -> Void in
        if error == nil
        {
            self.profPic = PFUser.currentUser().objectForKey("profilePicture") as UIImageView
        }
    }
}

任何想法如何做到这一点?当我点击那个视图,你需要xcode并向你显示线程/堆栈错误时,我得到常见的xcode错误。我问的问题似乎相当简单,我觉得我在查询时遇到了问题。

------------ Edit1 ----------

这是我通过进一步玩它得出的结果仍然相同。

    var profile:PFQuery = PFQuery(className:"Users")
    profile.findObjectsInBackgroundWithBlock
        {
            (objects:[AnyObject]! , error:NSError!) -> Void in
            if error == nil
            {
               let profPic = PFUser.currentUser().objectForKey("profilePicture") as UIImageView
            }
    }

------------ Edit2 ----------

    @IBOutlet var profPic: UIImageView!


    var query = PFQuery(className:"Users")
    query.whereKeyExists("profilePicture")
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if error == nil {

            let image: UIImage = objects["profilePicture"] as PFFile
            self.profPic.image = image

        }
        else {
            println("User has not profile picture")
        }
    }

错误是PFFile无法转换为UIImage,我应该使用PFImage吗?我无法解决这个问题。谢谢。

以下是一些关于发生什么的屏幕截图。

enter image description here

1 个答案:

答案 0 :(得分:1)

感谢@cjwirth,由于某种原因,答案被删除了,为了让我的代码能够正常工作,这就是需要完成的工作。这显示了当前用户个人资料图片,其中我将imageview放置在视图中。

@IBOutlet var profPic: UIImageView! = UIImageView()

override func viewDidLoad() {
    super.viewDidLoad()


    var query = PFQuery(className:"Users")
    query.whereKeyExists("profilePicture")
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if error == nil {
            if let imageFile = PFUser.currentUser().objectForKey("profilePicture") as? PFFile {
            imageFile.getDataInBackgroundWithBlock { (data: NSData!, error: NSError!) -> Void in
                    self.profPic.image = UIImage(data: data)

        }
        else {
            println("User has not profile picture")
        }
    }

 }