iOS聊天下拉重新整理聊天記錄的實現,ios聊天記錄

來源:互聯網
上載者:User

iOS聊天下拉重新整理聊天記錄的實現,ios聊天記錄
1. 想法

最近在開發一個社交類app,要實作類別似那種下拉重新整理聊天記錄的功能。

一般有兩種實現方式:

1. 直接fetch一個entity的所有資料然後在記憶體中做filter,就是把所有聊天記錄先讀出來然後每次載入10條。

    缺點:浪費記憶體   優點:速度快

2. 使用predicate,每次訪問資料庫讀取10條資料顯示。

   缺點:速度比較慢,會有卡頓現象 優點:記憶體少

 

2. 實現

因為聊天記錄非常多,一次讀取太浪費記憶體了,決定還是每次下拉就從資料庫讀取10條顯示。

 1 -(NSArray *)queryMessageResult 2 { 3     NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:NSStringFromClass([HistoryMessageLog class])]; 4     NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"time" ascending:NO]; 5     //把排序和分組規則添加到請求中,這樣聊天記錄根據時間倒序,最新的記錄在前面 6     [request setSortDescriptors:@[sortDescriptor]]; 7      8     [request setFetchLimit:10]; 9     [request setFetchOffset:self.FetchOffset];10     11     NSError *error;12     NSArray *messageArray = [[(id)[UIApplication sharedApplication].delegate managedObjectContext] executeFetchRequest:request error:&error];13     if ([messageArray count]) {14        //每次都要更新遊標15         self.FetchOffset += [messageArray count];16     }17     return messageArray;18     19 }

這樣每次都能讀取10條記錄出去,這個實現比較容易,做複雜了可以根據時間來讀取一定的條數。

 

3. 代碼

聊天的功能也做的差不多了,不過還有一些小問題,下面是

 

如果有感興趣的朋友可以下載代碼去看看,然後一起交流。

github地址:https://github.com/stevenxiaoyang/Chat.git

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.