会话列表状态机(ChatListViewModel)

会话列表状态机:ChatListViewModel 属于 ViewModel(状态机与业务编排)。本页的 props / events / behaviors 来自 sdk-imkit.json → globalUIKit,声明与示例来自 bindings.ios.uikit,不手写漂移。

契约属性(props)​

属性类型可选说明
clientIMPClient否IMLib 客户端(唯一数据源)
dataSourceChatListDataSource?是数据源协议实现;测试或预览时可注入假数据
options{pageSize:int}是页面选项(由契约声明的可选字段,例如搜索栏 / 网络横幅 / 历史 / 已读 / typing)

事件(events)​

事件参数说明
stateChangedstate列表状态变化(loading / empty / error / loaded)
errorerr错误(带 code / msg,可直接映射到错误码页)

行为(behaviors)​

  • load/refresh/loadMore 幂等
  • 合并 CONVERSATION 事件增量
  • 会话排序(置顶优先,其余 updatedAt 倒序)
  • 错误重试与空态

公开符号与声明​

语言声明
SwiftIMPChatListViewModel(client: IMPClient, dataSource: IMPChatListDataSource?, options: IMPChatListViewModelOptions?)
Objective-C- (instancetype)initWithClient:(IMPOSClient *)client dataSource:(id<IMPOSGlobalChatListDataSource>)dataSource options:(IMPOSGlobalChatListViewModelOptions *)options;

使用示例(Swift / Objective-C)​

IMPChatListViewModel(client: client, dataSource: nil, options: nil)
IMPOSGlobalChatListViewModel *chatListViewModel =
    [[IMPOSGlobalChatListViewModel alloc] initWithClient:client dataSource:nil options:nil];
示例口径

示例由绑定签名与契约类型生成:构造函数参数、协议方法、属性名均来自契约;实际业务中把示例变量替换为宿主实例即可。

在架构中的位置​

项值
层ViewModel(状态机与业务编排)
依赖GlobalUIKit -> IMKit -> IMLib(公开接口)
相关组件ChatListViewController、ChatListDataSource

错误处理​

ViewModel 层通过事件上报错误(如 error(err));错误码与处理建议见 Global IM UIKit 错误处理、状态码(运行时 43 条)与 状态码全量对照(440 条)。

相关文档​