繁体   English   中英

从Parse加载Swift中的图像

[英]Loading image in Swift from Parse

我成功地将数据从Parse中提取到swift中,但我的图像似乎并没有像我那样工作。

在我的cellForRowAtIndexPath方法中,我执行以下操作:

        var event: AnyObject? = eventContainerArray[indexPath.row]

        if let unwrappedEvent: AnyObject = event {
            let eventTitle = unwrappedEvent["title"] as? String
            let eventDate = unwrappedEvent["date"] as? String
            let eventDescription = unwrappedEvent["description"] as String
            let eventImage = unwrappedEvent["image"] as? UIImage

            println(eventImage)

            if (eventImage != nil){


                cell.loadItem(date: eventDate!, title: eventTitle!, description: eventDescription, image: eventImage!)}


            else {


                let testImage: UIImage = UIImage(named: "test-image.png")!

                cell.loadItem(date: eventDate!, title: eventTitle!, description: eventDescription, image: testImage )


            }

        }
    }

    return cell
}

我正在使用println()和我的PFQuery,我将其视为正在加载的对象的一部分: image = "<PFFile: 0x7fee62420b00>";

所以我得到的标题,日期,描述等等都是上面的eventContainerArray的一部分,但是当我看到eventImage时,它每次都是零。 在上面的代码中,它始终默认为加载test-image.png,因为图像即将出现。 我只是以不正当的方式处理PFFile吗? 不知道为什么它不起作用。

谢谢!

您的image可能是PFFile对象。 您需要加载它以从中获取UIImage对象。

let userImageFile = unwrappedEvent["image"] as PFFile
userImageFile.getDataInBackgroundWithBlock {
    (imageData: NSData!, error: NSError!) -> Void in
    if error == nil {
        let eventImage = UIImage(data:imageData)
        // do something with image here
    }
}

我不熟悉Parse,但考虑到你从println()看到的东西,看起来你收到的不是UIImage而是某种数据类型。 这是有道理的; 你不会通过网络接收ObjC对象。 所以, 得到一个文件,但是当你使用条件低垂(X as? UIImage )它返回零,因为你没有一个UIImage。

相反,你需要转换为PFFile,然后可能使用UIImage(data: file.getData)或类似的东西创建一个UIImage。 我不熟悉Parse的工作原理。

编辑:这是一个可能有用的相关问题: 我无法从PFFile获取图像

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM