问题描述
我的应用程序显示来自 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 (将#修改为@)