消息列表数据源协议(ChatDataSource)

消息列表数据源协议:ChatDataSource 属于 DataSource(列表数据)。本页的 props / events / behaviors 来自 sdk-imkit.json → globalUIKit,声明与示例来自 bindings.ios.uikit,不手写漂移。

契约属性(props)​

属性类型可选说明
messages[Message]否消息数组(按 seq 升序)

事件(events)​

事件参数说明
didChange—数据源变化(需要刷新列表)

行为(behaviors)​

  • 按 seq 升序/分页状态
  • 暴露 hasMore 与 loadingMore

公开符号与声明​

语言声明
Swiftprotocol IMPChatDataSource: AnyObject { var messages: [IMPMessage] { get }; var hasMore: Bool { get }; var loadingMore: Bool { get } }
Objective-C@protocol IMPOSGlobalChatDataSource <NSObject> @property (nonatomic, copy, readonly) NSArray<IMPOSMessage *> *messages; @property (nonatomic, readonly) BOOL hasMore; @property (nonatomic, readonly) BOOL loadingMore; @end

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

final class MyChatDataSource: IMPChatDataSource {
    var messages: [IMPMessage] = []
    var hasMore: Bool = false
    var loadingMore: Bool = false
    init() {}
}
@interface MyChatDataSource : NSObject <IMPOSGlobalChatDataSource>
@property (nonatomic, copy) id messages;
@end

@implementation MyChatDataSource

@end
示例口径

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

在架构中的位置​

项值
层DataSource(列表数据)
依赖GlobalUIKit -> IMKit -> IMLib(公开接口)
相关组件ChatViewModel、ChatViewController

错误处理​

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

相关文档​