我正在开发一个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
答案 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分享他们的观点!尝试所有建议肯定让我更接近我的答案。