搜索结果异步返回导致的返回结果和搜索内容不一致的问题

【本文代码针对iOS (其实也没多少代码),安卓或者其他开发遇到这样的问题可以参考一下这个逻辑。】

现在很多app都有搜索框内容变更后就直接搜索相关内容而不用点击搜索按钮这种设计。
而在输入过程中可能会进行多次搜索。
但即使是异步搜索,先调用的搜索返回结果更晚的情况还是比较罕见的。
(不过在返回数据量大的时候是有这个可能的)
今天在项目中遇到一个bug,在输入框搜索后删除里面的字符,全部删完之后却显示了搜索第一个字符的结果。
因为搜索无结果是用的DZNEmptyDataSetSource,本来无结果却因为接口返回重新刷新了。
我在搜索所在的类里面加了一个变量searchText,用于保存当前输入框的值,或者直接获取searchBar的text也可以。
在调用搜索接口前先
NSString *text = self.searchText;

在成功回调开头加上判断

 success:^(){
    if ([text isEqualToString:self.searchText]) {
        return;
    }
    ……
}

就可以避免以上问题,同时正常搜索的时候也不用执行太多后面的无用代码,反正数据也会被重新覆盖,也算是优化了这一块的性能。

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

推荐阅读更多精彩内容

  • 如有技术问题可扣扣交流:907392876 现在能搜到的自定义股票搜索和股票键盘少之又少,本人写了一套自定义股票搜...
    恋熙阅读 1,936评论 1 6
  • 1、searchBar 本例子实现布局:上面是一个navigationController,接下来一个search...
    lilinjianshu阅读 3,486评论 1 8
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,627评论 0 17
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,156评论 1 32
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4