在自动完成本地搜索中集成分页
Posted
技术标签:
【中文标题】在自动完成本地搜索中集成分页【英文标题】:integrate paging in autocomplete local searching 【发布时间】:2017-01-18 11:56:21 【问题描述】:我正在从存储在文档目录中的文件中读取 json 数据,结果数据数组的计数超过 1,30,000。
我已经实现了自动搜索方法,以根据现有数据过滤数据,以输入数据开头,即前缀谓词,这将在每个文本字段键事件上执行。
由于我无法为每个搜索执行完整的循环,所以我为每 12 个找到的结果打破循环并重新加载到 tableview。 我的要求是如何实现分页,以便在滚动时添加并重新加载下一个找到的数据。
func searchAutocompleteEntriesWithSubstring(_ substring: String,textfield:UITextField)
self.autoCompletesCompnies.removeAll(keepingCapacity: false)
searchQueue = DispatchQueue.global(qos: .default)
searchQueue!.async
for comp in self.companies!
var myString:NSString! = (comp.orgDescription! as NSString).lowercased as NSString!
myString = myString.trimmingCharacters(in: .whitespaces) as NSString!
let searchString = substring.trimmingCharacters(in: .whitespaces).lowercased()
let substringRange :NSRange! = myString.range(of: searchString)
if (substringRange.location == 0)
if !self.autoCompletesCompnies.contains(comp)
self.autoCompletesCompnies.append(comp)
DispatchQueue.main.sync
print("autocompanies count after search ========\(self.autoCompletesCompnies.count)")
self.autocompleteTableView.reloadData()
//self.autocompleteTableView.isHidden = false
if self.autoCompletesCompnies.count>0
print("is thread suspended \(self.isSuspended)")
if !(self.isSuspended!)
do
self.tableViewdesignFunc(textfield)
else
self.autocompleteTableView.isHidden = true
self.autoCompletesCompnies.removeAll(keepingCapacity: false)
if self.autoCompletesCompnies.count > 12
break
【问题讨论】:
您需要在用户向下滚动时添加一些新值来更新数据。我说的对吗? @the_dahiya_boy - 是的 【参考方案1】:使用此代码
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
let lastElement = dataSource.count - 1
if indexPath.row == lastElement
// handle your logic here to get more items, add it to dataSource and reload tableview
编辑
添加堆栈溢出答案。
在这里我得到了某人的 Stack 答案,请继续阅读以了解更多具体细节load-more-options-with-uitableview
【讨论】:
以上是关于在自动完成本地搜索中集成分页的主要内容,如果未能解决你的问题,请参考以下文章