在我們的iOS應用程序中,我們使用核心數據並使用NSFetchedResultsController將其與表視圖綁定。該應用程序是關於「聊天」功能。
UI與iPhone「Messages」應用程序的UI相同。當我們點擊一條消息時,它會顯示歷史和所有按時間分組的歷史記錄。其背後的邏輯是,如果先前的消息和當前消息以1小時的間隔接收,則日期&時間戳將顯示在最近的消息上。
我的問題是,我如何分組消息並獲取它們,以便我可以顯示日期&時間戳以及發件人和收件人消息。將類似於iPhone的消息分組消息應用程序
0
A
回答
0
有四種類型的消息單元類型 - 常規,組啓動,組中間,組結束。小組開始消息在最後一個小時後超過一小時,但小於一小時到下一個小時。小組中間距離前後不到一小時。羣端與之前的相近,但比它之後的時間多一小時。正常情況下是一個多小時前後。
這個項目有兩個部分。一種是正確顯示每種類型的單元格。另一個是計算每個消息的類型。我假設你可以自己弄清楚用戶界面的東西(不同的填充,每個填充,常規和組開始顯示時間,而不是四捨五入等)。
對於每個消息來找出它的類型,並不難 - 只要看看它之前和之後的消息。它可以在一次運行中完成 - O(n)。它也可以用緩存懶散地完成(也就是說,每次小區負載在它之前和之後檢查消息 - 下一次將答案保存在緩存中)。如果不同類型的單元格大小不同,那麼使用estimatedRowHeight會導致一些奇怪的跳躍。計算後,您還可以將類型的結果存儲到核心數據中。
當插入消息使無效和重新計算其上下的消息單元類型時,請小心。另外,當計算消息單元類型帳戶的情況下,沒有下一個或上一個單元格。
我想你是希望得到一些核心數據魔法 - 就像sectionIndexKey中的一些切割技巧。但是通過數組並計算它真的非常簡單。
相關問題
- 1. 類似於p的Primefaces組件:消息
- 2. GUI類似於黑莓應用程序的消息視圖
- 3. 如何創建類似於iPhone buildin SMS應用程序的bubbble消息框?
- 4. 即時消息iPhone應用程序
- 5. 從iPhone應用程序發送消息
- 6. RabbitMQ將消息分組爲一個消息,即合併消息
- 7. 如何使這個MySQL查詢按類組/消息類似於消息?
- 8. 用於iPhone應用程序的Internet連接不可用消息
- 9. 在Web應用程序中使用類似RabbitMQ的消息嗎?
- 10. iphone消息應用程序。我如何構建類似的東西?
- 11. 爲ios7中的應用程序UIoresview創建類似應用程序的消息
- 12. 類似Facebook的消息框
- 13. 將消息拉到Android應用程序
- 14. 攔截Android中的應用程序之間的特定消息(類似於snapchat)
- 15. 將消息添加到消息數組
- 16. 消息應用程序的商店消息
- 17. 使用PrimeFaces創建類似於p:消息的消息而不添加到FacesContext?
- 18. 消息收發應用程序接收消息
- 19. 在UITextField中添加TagList,類似於本地IOS消息應用程序
- 20. Iphone消息
- 21. 如何將回復消息分組爲原始消息
- 22. 用於java分佈式應用程序的最佳消息組件/庫?
- 23. 如何將應用程序發送至應用程序消息
- 24. Android上的消息應用程序(MMS)
- 25. WP7上的消息應用程序
- 26. UIScrollView消息應用程序的行爲
- 27. Android應用程序的消息後端
- 28. ASP.NET Web應用程序的消息框
- 29. 應用程序之間的Windows消息
- 30. 發送android應用程序的消息?
謝謝。它不像我們所知道的關於實施的理論那麼簡單。核心數據以及Fetch結果控制器並相應地更新集合視圖/表視圖是一個非常複雜的解決方案。 – Satyam
我已經完成了。花了我大約2周。如果你仍然有問題,只是fetchedResultsController和更新,那麼我會建議先獲得100%,然後添加關閉消息分組。 –
感謝您的建議。 fetchedResultsController實現完全沒有問題,它已經完成了。在進行分組時,必須在兩條消息之間添加日期和時間戳,並且該日期和時間戳也不是節標題。它與「iPhone上的消息」中的正常行一樣。當我們使用table view和fetched results controller - 行數時,cellForRowAtindexPath ec方法。將基於獲取的結果數組。這會導致問題插入帶有日期和時間戳的行。 – Satyam