【发布时间】:2014-03-05 10:35:54
【问题描述】:
我正在为 iOS 开发一个聊天应用程序。该应用程序将允许用户创建聊天室并与聊天室中的成员聊天(如 IRC 聊天室)。
应用的流程是;
- 用户可以加入聊天室
- 消息将存储在 coradata 支持的 SQLite 中 数据库
- 本地消息和服务器中的消息(所有 与特定用户相关的消息仅存储在他的本地数据库中)
- 我正在使用 NSFetchResultController 来更新和刷新聊天 桌子。收到聊天消息后,会将其存储到 DB 中,并且表格视图将加载新的聊天消息。
- 所有核心数据操作都在主线程中完成
- 获取请求的
batchsize是20,performfetch方法是 致电viewDidLoad
问题
- 收到聊天消息后,UI 会挂起一段时间(1 - iPhone 4 中为 2 秒)。 (如果我暂停执行,它表明那里 获取控制器的 [tableview endUpdate] 中发生了什么 委托)
- 要转到当前聊天视图中的最新聊天,用户必须 从数据库加载所有聊天记录
问题
有没有更好的方法来处理这个要求?使用fetchresultcontroller可以吗?
如何以分页方式加载聊天 - 比如什么 sup 或 viber - 使用
fetchresultcontroller。- 如果我将后台模式与多个托管对象上下文一起使用,是否会提高性能?
【问题讨论】:
标签: ios objective-c core-data chat nsfetchedresultscontroller