PFFile未加载到表视图上

时间:2015-04-26 21:08:23

标签: swift parse-platform xcode6.3 ios8.2

我正在开发一个Parse查询,它会提取基于地理位置的名称和照片,然后将它们加载到表格视图中。查询的第一部分没有问题。我被困在拉/加载照片的第二部分。

在queryForTable方法中缺少对图像的调用我可能会出错。在这里,我尝试过includeKey(因为它不是指向另一个对象的指针而失败);我还使用getDataInBackgroundWithBlock调用了图像。在每个实例中,我都会尝试使用像cell.imageData.image = photo这样的行将查询过的对象加载到表视图中。

但不同的SO帐户也表明调用可以在tableView方法中进行,这就是我在下面的内容。我已经梳理了SO,Parse.com和其他资源,但我还没有找到解决方案。希望有人可以提供帮助:

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!, object: PFObject?) -> Stores! {
   let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! Stores

    if let object = object {
        let Name = object.valueForKey("Name") as? String
        cell.storeList.text = Name

        let photo = object.objectForKey("Photos") as? PFFile
        photo?.getDataInBackgroundWithBlock {(imageData: NSData!, error: NSError!) -> Void in
            if error == nil {
                let image = UIImage(data: imageData)
                 cell.storeImage.file = photo
            }
        }}

    return cell as Store

2 个答案:

答案 0 :(得分:0)

您应该使用cell.storeImage.file = photo而不是image

所以在你的完成块中,你应该有:

let image = UIImage(data: imageData)
cell.storeImage.file = image

答案 1 :(得分:0)

最终对我有用的是将文件属性放在调用中:

cell.imageView.loadInBackground {(image: UIImage!, error: NSError!) -> Void in 
  if error == nil {
    cell.imageView.file = object!.objectForKey("Photos") as? PFFile
   }

重新访问解析文档显示它是' .file,'不是' .image'。另外,我使用了'loadInBackground'而不是' loadInBackgroundWithBlock',用于异步调用。希望这可以帮助那些对同一问题感到困惑的人。

感谢@BHendricks,@ iericgu,@ danh分享他们的观点!尝试所有建议肯定让我更接近我的答案。