使用SQLite搜索数据时延迟并放在UITableView上

时间:2012-02-23 14:38:50

标签: iphone objective-c uitableview sqlite uisearchbar

我有一个带有 UITableView 的屏幕和一个搜索栏。这个搜索是在数据库中进行的,它还必须查看另一个相关的表,所以做一些内连接

问题是我输入快速时有延迟,因为当我输入一个单词时,我看到 UITableView 逐字逐句更新,直到用完整的单词完成搜索。 / p>

这是一段代码:

- (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 个答案:

答案 0 :(得分:1)

textDidChange添加新操作之前,您需要取消队列中的待处理操作,否则您必须等待每个搜索完成才能执行最新的操作。