本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含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,那数据库查询时候怎么能确定究竟是哪一个用户呢,这就造成了前面四张图的情况..
给大家更改后的效果,是不是完美解决?
效果图
网友评论