gpt4 book ai didi

objective-c - UISearchBar 搜索两个数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:59:58 41 4
gpt4 key购买 nike

我有一个搜索栏,用于搜索数组,并用结果更新 UITableView。表格 View 是一个包含书名和作者的书籍列表:

The titles and authors

现在,搜索栏只搜索标题,但我想让它也搜索作者。这是我的搜索代码(我从 http://blog.webscale.co.in/?p=228 得到的)。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[tableData removeAllObjects];// remove all data that belongs to previous search
if([searchText isEqualToString:@""]||searchText==nil){
[tableView reloadData];
return;
}

for(NSString *name in dataSource){
NSInteger counter = 0;

//NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
NSRange r = [[name lowercaseString] rangeOfString:[searchText lowercaseString]];
if(r.location != NSNotFound)
[tableData addObject:name];


counter++;
}
//[pool release];


[tableView reloadData];

dataSource 是包含标题的 NSMutable 数组。包含作者的数组称为“作者”。 “tableData”是存储应出现在屏幕上的单元格(包含正在搜索的术语的单元格)的数组。

非常感谢,

卢克

最佳答案

我会修改 dataSource 数组,通过创建一个带有键值对的 NSDictionary 来包含标题和作者(Book 类会更好)。

//Do this for each book
NSDictionary * book = NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
title, @"TITLE", author, @"AUTHOR", nil];
[dataSource addObject:book];

之后,您可以更改搜索方法以改为使用 NSDictionary。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{

[tableData removeAllObjects];

if(searchText != nil && ![searchText isEqualToString:@""]){

for(NSDictionary * book in dataSource){
NSString * title = [book objectForKey:@"TITLE"];
NSString * author = [book objectForKey:@"AUTHOR"];

NSRange titleRange = [[title lowercaseString] rangeOfString:[searchText lowercaseString]];
NSRange authorRange = [[author lowercaseString] rangeOfString:[searchText lowercaseString]];

if(titleRange.location != NSNotFound || authorRange.location != NSNotFound)
[tableData addObject:book];
}

}

[tableView reloadData];
}

请注意,使用此方法时,您需要更改 cellForRowAtIndexPath 方法以使用 NSDictionary 而不是标题字符串。

关于objective-c - UISearchBar 搜索两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9300362/

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