美文网首页
史诗级 bug 解决

史诗级 bug 解决

作者: 小冰山口 | 来源:发表于2016-10-01 14:45 被阅读0次

    本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含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,那数据库查询时候怎么能确定究竟是哪一个用户呢,这就造成了前面四张图的情况..

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

    效果图

    相关文章

      网友评论

          本文标题:史诗级 bug 解决

          本文链接:https://www.haomeiwen.com/subject/jhbryttx.html