Медленная получении данных

searchbar
ios
coredata

#1

Добрый день!
Есть БД с более 70000 записи. При поиске с (SearchBar) клавиатура залипает на несколько секунд и очень медленно фильтруется данные в UITableView.

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    initializeFetchedResultsController()
    self.tableView.reloadData()
}


// MARK: - Initialization FRC
func initializeFetchedResultsController() {
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
        return
    }
    let moc = appDelegate.managedObjectContext
    let request = NSFetchRequest< Entity>(entityName: "Entity")
    request.fetchBatchSize = 20
    if !(searchBar.text?.isEmpty)! {
        if searchBar.text?.count == 1 {
            request.predicate = NSPredicate(format: "word LIKE %@", searchBar.text!+"*")
        } else {
            request.predicate = NSPredicate(format: "word CONTAINS[cd] %@", searchBar.text!)
        }
    }
    let sortDescriptorWordID = NSSortDescriptor(key: "word", ascending: true)
    request.sortDescriptors = [sortDescriptorWordID]
    fetchedResultsController = NSFetchedResultsController(fetchRequest: request, managedObjectContext: moc, sectionNameKeyPath: nil, cacheName: "mainCache")
    fetchedResultsController.delegate = self as? NSFetchedResultsControllerDelegate
    do {
        try fetchedResultsController.performFetch()
    } catch {
        fatalError("Failed to initialize FetchedResultsController: \(error)")
    }
}

Для атрибута (word) добавлен индекс.
Как можно оптимизировать получении данных?
Можно фильтрацию данных использовать в другом потоке?


#2

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#3

Есть какой нибудь рабочий пример?
Заранее благодарю!