我成功地将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吗?不知道为什么它不起作用。
谢谢!
答案 0 :(得分: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 :(得分:1)
我对Parse并不熟悉,但考虑到你从println()
看到的内容,看起来你收到的不是UIImage而是某种数据类型。这是有道理的;你不会通过网络接收ObjC对象。所以你 获取文件,但是当你使用条件向下转换(x as? UIImage
)时,它返回nil,因为你没有UIImage。
相反,您需要转换为PFFile,然后可能会创建一个带有UIImage(data: file.getData)
或类似内容的UIImage。我并不熟悉Parse的工作原理。
编辑:这是一个可能有用的相关问题:I can't get image from PFFile