史诗级 bug 解决

本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含Java, 数据结构与算法, iOS, 安卓, python, flutter等等, 如有需要, 联系微信tsaievan.

先看4张图
Snip20161001_4.png
发现了什么? 无论群聊中的用户是谁,显示得都是同一个图标, 有可能是 nil, 有可能是 A, 有可能是 B
很不幸的是,老师上课的时候一直是 nil.

刚开始, 我试图打印真实的 jid, 一直打印不出来,后来反复运行,居然打印出来了. 后来就发现,这个真实的 jid, 一直在我加群聊的那几个账户里面来回随机.

我在测试的时候,没有动老师一行代码,只是把域名和用户名改成了自己的而已

后来发现问题出现在这一行代码

request.predicate = [NSPredicate predicateWithFormat:@"jidStr == %@",jid.bare];

谓词的设置,如果是== jid.bare 的话,查询是有问题的.
应该改成

request.predicate = [NSPredicate predicateWithFormat:@"jidStr == %@",jid.full];

哈哈哈,史诗级 bug 就一行代码,是不是觉得很坑?

因为

完整的Jid包括 Username@Domain/resource

resource-->资源/来源,用于区别客户端来源,xmpp协议设计为可多客户端同时登陆,resource就是用于区分同一用户不同端登陆

如果你在设置谓词的时候,不包含resource,那数据库查询时候怎么能确定究竟是哪一个用户呢,这就造成了前面四张图的情况..

给大家更改后的效果,是不是完美解决?

效果图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容