对于带有搜索栏的大型数组,文本搜索速度太慢iPhone上的tableview

时间:2016-02-18 08:48:20

标签: ios sqlite swift2

我有一大堆大小约100000个条目。我在用户在UISearchBar中搜索时显示它,并在tableview上显示过滤数据。但是,在进行动态搜索时,搜索栏太慢。每当用户在搜索栏上放入一个字符时,我就会过滤表格。因此,它在searchBar上输入的文本作为非常晚的响应。我只需要等待它出现在searchBar上。

这就是我想要过滤我的数组。

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

    filtered = data.filter({ (text) -> Bool in
        let tmp: NSString = text

        let range = tmp.rangeOfString(searchText, options: [NSStringCompareOptions.CaseInsensitiveSearch ,
        NSStringCompareOptions.AnchoredSearch])
        return range.location != NSNotFound
    })
    if(filtered.count == 0){
        searchActive = false;
    } else {
        searchActive = true;
    }
    self.tableView.reloadData()

}

2 个答案:

答案 0 :(得分:0)

确保您没有阻止main_queue。也许你是从主队列调用sqlite函数。如果是这样,请尝试使用FMDatabaseQueue并从后台队列调用方法并从主队列更新tableview。这将为您处理一切。

答案 1 :(得分:0)

您是否曾尝试使用Realm.io进行查询?

我知道现在比iOS中的任何数据库管理员更快。

Realm.io