Задержка при поиске данных с SQLite и положить на UITableView - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть экран с UITableView и панель поиска.Этот поиск выполняется в базе данных, он также должен смотреть на другую связанную таблицу, как и некоторые внутренние объединения .

. Проблема в том, что при быстром наборе возникает задержка, потому что когдаЯ заканчиваю набирать слово и вижу, что UITableView обновляется медленной буквой за буквой, пока не завершится поиск по всему слову.

Вот фрагмент кода:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    self.queue = [[NSOperationQueue new] autorelease];
    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(makeSearch:) object:searchText];

    [self.queue addOperation:operation];
    [operation release];
}

- (void)makeSearch:(NSString *)_string {
    [self.displayItems removeAllObjects];

    Users *usr = [[[Users alloc] init] autorelease];
    self.displayItems = [[[NSMutableArray alloc] initWithArray:[usr getUsersLike:_string]] autorelease];

    [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
}

(переменная displayItems используется для заполнения UITableView .)

1 Ответ

1 голос
/ 23 февраля 2012

Вам необходимо отменить ожидающие операции в своей очереди перед добавлением новой операции, когда textDidChange, в противном случае вам придется ждать завершения каждого отдельного поиска, прежде чем сможет выполнить самый последний.

...