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在錯誤的一方),但是它修復了很多小事情(比如處理幾乎沒有消息的聊天)。如果我不得不再做一次,我會做一個自定義佈局,但我不會那麼快地駁回雙反法。