0

考虑一个聊天应用场景,在这里你有超过10万级的消息和实时通信的非常大的群体。懒加载旧邮件与NSFetchedResultsController而做实时通信

就像大多数聊天应用程序,我们希望最新的消息出现在新项目在底部添加的底部即。

  1. 什么是使用延迟加载NSFetchedResultsController最佳做法?通过增加fetchLimit来改变提取请求似乎不是一个好主意。此外,使用额外的数组而不是fetchedObject也看起来不是一个非常优雅或方便的解决方案。

  2. 什么是用于显示在底部,即倒车UITableView方向最新消息的最佳实践?转换似乎不是一个优雅的解决方案,或者它?

寻找一个优雅的解决方案,这是人们的工作。请指教。

回答

0

fetchLimitNSFetchedResultsController工作。要限制你可以做以下的控制器:

  1. 做单取了fetchLimit = 1和fetchOffset = BATCH_SIZE(其中批量大小的东西很大,但不是很大=〜200)
  2. GET您提取的消息的日期
  3. 将fetchedResultsController限制为该消息的日期。

现在你有一个200个消息的fetchedResultsController。请注意,只要它打开,它可能会增加尺寸。

当用户向后滚动,你可以做一个获取找出正确的日期范围做fetchedResultsController的一些类似的调整。

用于显示的细胞我使用了双逆法(应用180旋转到的CollectionView和180旋转到每一个细胞)。它并不是那么优雅,但它的工作原理并不像它看起来那么昂贵 - 整个屏幕已经在幕后的一个openGL层中。它引发了很多小的事情(比如scrollIndicator在错误的一方),但是它修复了很多小事情(比如处理几乎没有消息的聊天)。如果我不得不再做一次,我会做一个自定义布局,但我不会那么快地驳回双反法。