PFQueryCollectionViewController在添加时不显示新数据

时间:2015-07-24 21:22:48

标签: ios swift parse-platform uicollectionview

我一直在探索如何创建一个允许用户分享照片的社交应用程序。我使用Parse作为后端,该应用程序的一个功能是允许用户将图片保存到Parse,并查看当前保存到Parse的所有照片。

我的应用程序当前将照片推送到Parse服务器就好了。然而,当我试图在我的" Wall"上显示上传的照片时,我会遇到奇怪的行为。

以下是我如何将照片保存到Parse:

let pictureData = UIImagePNGRepresentation(UIImage(named: "someImage"))
let file = PFFile(name: "image", data: pictureData)
file.saveInBackgroundWithBlock({ succeeded, error in
    if succeeded {
        let wallObject = WallObject(imageFile: file)
        wallObject.saveInBackgroundWithBlock { succeeded, error in
            if succeeded { println("Succeeded saving picture to Parse") }
            if let error = error { println("Error saving object: \(error)") }
        }
    } else {
        println("Error saving file to Parse: \(error)")
    }
})

保存工作正常,当我检查网站上的Parse数据库时,图像就在那里。但是,当我尝试在我的PFQueryCollectionViewController子类中显示图像时(通过使用pullDownToRefresh),新图像不会将自身作为新单元格插入,而是替换其中一个旧图像,从中踢出最旧的图像即使在从Parse获取新对象之后,collectionView仍保留相同数量的单元格。

除了继承UICollectionViewLayout并做一些布局代码之外,PFQueryCollectionViewController的设置非常简单。使用println(objects.count)objectsWillLoad方法中的objectsDidLoad语句,我向自己保证新对象已加载到objects数据数组中。

尝试解决方案: 我尝试collectionView!.reloadData设置了一个调用reloadObjects的按钮,使用了collectionView' performBatchUpdates,并遇到了这个错误:UICollectionView _endItemAnimationsWithInvalidationContext:tentativelyForReordering:

底线:虽然PFQueryCollectionViewController在运行时刷新时识别出新对象,但它不会插入新单元格以容纳新项目。

有一点需要注意的是,当Parse数据库完全为空并且新图片上传到Parse时,collectionView可以为新图像正确生成1个新Cell。

PFQueryCollectionViewController dataSource实现

  override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFCollectionViewCell? {
    var cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as? FeedViewCollectionCell
    if cell == nil {
      cell = FeedViewCollectionCell()
    }
    cell!.populateDataWithObject(object as! CollectionCellData)
    return cell
  }

2 个答案:

答案 0 :(得分:1)

  

除了继承UICollectionViewLayout并做一些布局之外   代码

这是可疑的,你没有自定义布局吗?

答案 1 :(得分:0)

在cellForItemAtIndexPath中的

把这个:

    cell?.imageView.image = nil its work for me