从Parse加载Swift中的图片

3

我成功地将数据从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?不确定为什么不起作用。
谢谢!
2个回答

4

您的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
    }
}

1
我不熟悉Parse,但根据您从println()中看到的内容,似乎您收到的不是UIImage,而是某种数据类型。这是有道理的;您不会在网络上接收到ObjC对象。因此,您确实正在获取文件,但是当您使用条件下转换(x as? UIImage)时,它返回nil,因为您没有UIImage。

相反,您需要转换为PFFile,然后可能使用UIImage(data: file.getData)或类似方法创建UIImage。我不熟悉Parse的确切工作方式。

编辑:这里有一个相关的问题,可能会有所帮助:我无法从PFFile获取图像


我想我明白了——我会尝试将其转换为PFFile并使其工作。谢谢! - hudsonian

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