iOS 整理消息列表Demo<二>

筅森魡賤 提交于 2020-01-07 04:10:31

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

还是上一篇的消息列表,不过这次类型可能不止三个,要怎么做呢?参考一下别人的代码 ,跟读记录一下:

阅读代码,消息列表,多种类型,列表里有重复类型的消息,比如 聊天 可能是不同的人,别的公告什么的是一样的,只显示一行,其他有的类型可能是多行。

数据源: self.messageList 数组。

进入页面通过 tableview主动刷新 ,先链接 MQTT 注册 MQTT 然后去请求接口:

接口: xxx_list 返回了一个list的 message 的 model.

然后请求 session LIst 接口: CMD:@“xxxx_sessions" 不传参数。

然后遍历返回的 data数据数组:

去找是否有 会议类型的,如果有的话就加到 self.messageList 。

然后 :请求列表每项的未读数和最新一条消息 cmd:xxx_notices 传入 id 从 messageList 数组里遍历 model 拿到外面的 ID , 然后把返回来的 对应 list 的 model 一个个赋值给:

temp.accountNotice = accountNoticeListDicModel.data[i];

每赋值一个,给 model里的 计数属性字段加 1.

临时创建一个局部变量数组 把配置好的 临时 model 加进去。

然后把这个临时的 数组 更新缓存数组:messagecacheList

NSMutableArray *messageIndexPathNew = [[NSMutableArray alloc] init]; if (self.messagecacheList.count != messageNewList.count){ // 如果两次结果不相等 则全部刷新 [self.messageTV reloadData]; } else { // for (int i = 0; i < self.messagecacheList.count; i++){ // 比较对应行是否有变化 如果有则将对应行放入刷新队列 Message *oldmessage = self.messagecacheList[i]; Message *message = messageNewList[i]; if (![oldmessage.accountNotice isEqual:message.accountNotice] || ![oldmessage isEqual:message]){ [messageIndexPathNew addObject:[NSIndexPath indexPathForRow: i inSection:0]]; } }

在 message model里重写了 比较方法 然后进行具体的字段比较。

  • (BOOL)isEqual:(Message *)object{ if (self == object){ return true; } // ID 相等 名字相等 图标相等 if ([self.idField isEqualToString:object.idField] && [self.name isEqualToString:object.name] &&xxxxx]]){ return true; } return false; }

刷新单独去刷新, 使用组建好的 messageIndexPathNew 数组。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!