消息列表数据源协议(ChatDataSource)
消息列表数据源协议:ChatDataSource 属于 DataSource(列表数据)。本页的 props / events / behaviors 来自 sdk-imkit.json → globalUIKit,声明与示例来自 bindings.ios.uikit,不手写漂移。
契约属性(props)
| 属性 | 类型 | 可选 | 说明 |
|---|---|---|---|
messages | [Message] | 否 | 消息数组(按 seq 升序) |
事件(events)
| 事件 | 参数 | 说明 |
|---|---|---|
didChange | — | 数据源变化(需要刷新列表) |
行为(behaviors)
- 按 seq 升序/分页状态
- 暴露 hasMore 与 loadingMore
公开符号与声明
| 语言 | 声明 |
|---|---|
| Swift | protocol 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 条)。