【发布时间】: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 - 是的
标签: ios objective-c swift uitableview swift3