重置所有面过滤器后无限循环

问题描述

我的应用程序显示来自 Algolia 的公告。一种市场。用户可以按类别、价格等过滤公告。用户还可以通过键入搜索公告,Algolia 会显示用户输入的文本匹配的结果。 删除所有过滤器时,我遇到了一些奇怪的问题。我得到了可以与 InstantSearch 配合使用的自定义表格视图。一切正常,但在一种情况下 InstantSearch 陷入无限循环。我必须添加“下拉刷新”表视图并重置所有选定的过滤器。 当我选择过滤器时,例如。类别,即时搜索显示与类别匹配的每个项目,它很棒。当我拉下表格视图时出现问题。 FilterClearController 确实清除了过滤器,但不返回所有项目,但只返回与之前找到的数量相同的数量(因此,如果 category:adveture 包含 5 个元素,下拉后我只得到 5 个不同的元素)并且它也遇到了无限循环,经过几天的测试,我收到了近 1 万个搜索请求。 奇怪的是,当我使用 Algolia test credentials AppID: "latency" 运行应用程序时,一切正常。 此代码一个示例。

    override func viewDidLoad() {
        super.viewDidLoad()
        self.textFieldController = TextFieldController(searchBar: searchBar)
        // Component that manages and displays a list of search results
        hitsInteractor.connectSearcher(searcher)
        hitsInteractor.connectController(hitsTableViewController)
        
        queryInputInteractor.connectSearcher(searcher)
        queryInputInteractor.connectController(self.textFieldController)
        
        searcher.connectFilterState(filterState)
        searcher.isdisjunctiveFacetingEnabled = false
        searcher.indexQueryState.query.hitsPerPage = 20
        // Select category
        filterState[and: "category"].add(Filter.Facet(attribute: "document.category",stringValue: "adventure"))
        searcher.indexQueryState.query.filters = filterState.description
        filterClearInteractor.connectFilterState(filterState,filterGroupIDs: nil,clearMode: .specified)
        filterClearInteractor.connectController(clearFiltersController)
        searcher.search()
        setupUI() 
}

这是我的初始化代码。它只返回与类别匹配的项目。在 setupUI 中,我分配给 tableView.refreshControl = clearFiltersController.refreshController。 波纹管是我的“自定义FilterClearController

public class PullDownToRefreshController: FilterClearController {

  public let refreshController: UIRefreshControl

  public var onClick: (() -> Void)?

  public init(refreshController: UIRefreshControl) {
self.refreshController = refreshController
refreshController.addTarget(self,action: #selector(didPullDown),for: .valueChanged)
  }

  @objc private func didPullDown() {
onClick?()
refreshController.endRefreshing()
  }

}

感谢您的任何帮助! 马特

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...