gpt4 book ai didi

objective-c - NSArray 搜索中的 NSDictionary

转载 作者:行者123 更新时间:2023-11-28 19:20:28 25 4
gpt4 key购买 nike

我在使用某些搜索代码时遇到问题。我有一个名为 searchedData 的 NSMutableArray,它包含 NSDictionaries(每个对象一个)。这是我现在的搜索代码:

- (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;
}
int i = 0;
while (i < [dataSource count]) {
NSDictionary *coolDict = [searchedData objectAtIndex:i];
NSString * title = [coolDict objectForKey:@"TITLE"];
NSString * authorString = [coolDict objectForKey:@"AUTHOR"];

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

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

[tableView reloadData];

}

它找到条目数,然后转到每个条目,找到键“TITLE”和“AUTHOR”的对象,然后如果匹配则在 UITableView 中显示条目。

问题是它从不显示任何内容,即使有匹配项也是如此。我知道表/字典不为空(我有 NSLogged 它)所以我不知道为什么它不起作用。

最佳答案

您忘记重新加载已将相关数据添加到数据源的 tableView。

我稍微改进了方法的编码,并添加了缺失的行。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[tableData removeAllObjects];// remove all data that belongs to previous search
if (![searchText isEqualToString:@""] || searchText != nil) {
int i = 0;
while (i < [dataSource count]) {
NSDictionary *coolDict = [searchedData objectAtIndex:i];
NSString * title = [coolDict objectForKey:@"TITLE"];
NSString * authorString = [coolDict objectForKey:@"AUTHOR"];

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

if(titleRange.location != NSNotFound || authorRange.location != NSNotFound)
[tableData addObject:title];
i++;
}
}
[tableView reloadData];
}

关于objective-c - NSArray 搜索中的 NSDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321459/

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