在Swift中显示来自解析的图像

时间:2019-04-13 23:26:10

标签: swift parse-platform parse-ios-sdk

我正在尝试将存储在Buddy For Parse中的图像显示到UIImageView中,但是我不断收到此错误:

  

无法将类型'PFFileObject'(0x1045e0568)的值转换为'NSString'(0x1041d75d8)。   2019-04-13 18:15:09.869460-0500 PerfectLaptop [43839:3094232]无法将类型'PFFileObject'(0x1045e0568)的值转换为'NSString'(0x1041d75d8)。

我已经在Parse中存储了许多字符串,并且能够毫无问题地访问它们,并且还存储了我想使用的图像,但是,无论我如何尝试,我似乎都无法正常使用它。我发现许多解决方案都包括将对象强制转换为PFFile,但是似乎不再存在。

let query = PFQuery(className: "whichOneRecommended")
query.findObjectsInBackground { (objects, error) in
    if error == nil
    {
        if let returnedobjects = objects
        {
            for object in returnedobjects
            {

                if (object["whichOne"] as! String).contains("\(self.whichOneJoined)")
                {
                    self.laptopImage.image = UIImage(named: (object["laptopImage"]) as! String)



                }
            }
        }
    }
}

虽然图像文件在解析中是可查看和可下载的,但我似乎实际上并没有将其显示在imageview中,我希望通过像我一样运行此功能来以编程方式更改图像视图对象的其他部分。

预先感谢

1 个答案:

答案 0 :(得分:1)

首先要注意的是,PFFile已重命名为PFFileObject

您正试图将object["laptopImage"]类型的值Any传递到UIImage(named:),因为该函数需要String,所以不能这样做。

首先,您需要创建一个PFFileObject类型的常量:

let file = object["laptopImage"] as? PFFileObject

然后下载文件数据,从PFFileObject创建UIImage并将图像分配给UIImageView

file.getDataInBackground { (imageData: Data?, error: Error?) in
    if let error = error {
        print(error.localizedDescription)
    } else if let imageData = imageData {
        let image = UIImage(data: imageData)
        self.laptopImage.image = image
    }
}

有关详细信息,请参见section on files in the iOS Guide