gpt4 book ai didi

iOS UISearchBar 如何正确实现 "search as you type"行为?

转载 作者:行者123 更新时间:2023-12-01 18:14:18 24 4
gpt4 key购买 nike

我正在使用 iPad 上的 Split View Controller 实现搜索功能。它搜索 NSDictionary 的数组我从一个 JSON 对象中获取。

我已经在表格 View 的标题 View 中添加了一个搜索栏,并且当用户在搜索栏中输入搜索查询时,我正在使用下面的代码用搜索结果更新表格。

我有兴趣如果我正在做的是在 iOS 上实现“键入时搜索”行为的正确方法? 如果我的 JSON 返回 1000 个结果,我会遇到性能问题吗?我是否需要实现搜索结果 Controller ,而不是仅仅将搜索栏放入 TableView 标题?

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[self doSearchWithString:searchText];
}


- (void)doSearchWithString:(NSString*)searchString
{
NSPredicate* predicate = [NSPredicate predicateWithBlock:^BOOL(NSDictionary *object, NSDictionary *bindings) {
//get the value from the dictionary (the name value)
NSString *name = [object objectForKey:@"name"];

if([[name lowercaseString] rangeOfString:[searchString lowercaseString]].location != NSNotFound) {
return YES;
}
return NO;
}];

//change the datasource and ask the table to refresh itself
self.searchResults = [self.dataSource filteredArrayUsingPredicate:predicate];
[self.tableView reloadData];
}

最佳答案

根据数据集的大小,您可能很难使用 Core Data 获得足够的性能。

可能值得预取然后尝试二进制数组搜索。看:

How to perform binary search on NSArray?

否则,它可能需要自定义二进制索引,例如有向无环字图。看看这个答案:

auto complete a search

关于iOS UISearchBar 如何正确实现 "search as you type"行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24122342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com