0

我正在处理一个 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
4

2 回答 2

0

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

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

let image = UIImage(data: imageData)
cell.storeImage.file = image
于 2015-04-26T22:44:22.500 回答
0

最终对我有用的是将文件属性放置在调用中,如下所示:

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

重新访问 Parse 文档表明它是“.file”,而不是“.image”。此外,我使用“loadInBackground”而不是“loadInBackgroundWithBlock”进行异步调用。希望这可以帮助对同一问题感到困惑的人。

感谢@BHendricks、@ericgu、@danh 分享他们的观点!尝试你所有的建议肯定让我离我的答案更近了一步。

于 2015-05-01T05:13:31.103 回答