検索コードに問題があります。私はsearchedData
と呼ばれるNSMutableArrayを持っていて、NSDictionaries(オブジェクトごとに1つ)を含んでいます。ここでは、検索コードは、私が今持っているのです。NSArrayのNSArray検索
- (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しています)ので、なぜ動作しているのか分かりません。
'while'ループは' datasource'ごとにループしますが、代わりに 'searchedData'から値を引き出すのはなぜですか?それはタイプミスだったのでしょうか? –
それらはお互いに鏡像しませんが、同じ量のオブジェクトを含みます。 –
投稿者と本のタイトルが同じで、イベントが発生した場合は、あなたのtableViewで:didSelectRow:メソッド –