使用NSFetchedResultsController实现聊天应用程序

时间:2014-07-16 09:58:19

标签: ios core-data nsfetchedresultscontroller

所有消息按消息时间asc排序(底部是最新的)。所有消息都显示为UITableView。它将默认显示50条消息,并在下拉时再加载20条消息。如何使用CoreData NSFetchedResultsController实现此目的? NSFetchedResultsController是否支持下拉分页?

我认为这样做并不是一个好主意:

  • NSFetchRequest.fetchLimit设为50
  • 调用performFetch
  • NSFetchedResultsController方法
  • 下拉时,将NSFetchRequest.fetchLimit设置为70,90等
  • 再次调用performFetch NSFetchedResultsController方法
  • 重新加载整个表视图。

2 个答案:

答案 0 :(得分:4)

在实施技术方面进行头脑风暴之前,仔细研究应用程序的用户体验和整体设计是非常有益的。以下是您在开发聊天应用时可能需要解决的一些问题:

  1. 消息气泡可以重叠吗?
  2. 您是否需要动态显示时间戳,输入动画等内容?
  3. 您如何组织部分提取数据以便仔细使用网络?
  4. 您是否需要为聊天中的任何对象制作动画? (消息气泡插入,删除和更新)。我指的是一些使用UIDynamics的高级动画。
  5. 使用UITableView实现上述功能可能是一个真正的问题。使用UICollectionView时,您可以自定义布局和批量更新。

    对于这篇文章中列出的想法,应该给一个在一种流行的俄语资源上提出这个问题的Viber Messanger开发者一个信用。

答案 1 :(得分:1)

您可以设置batchSize,而不是设置fetchLim,让NSFetchedResultsController处理它如何将对象加载到内存中。

否则,您必须再次更新fetchRequest和performFetch。