0

私はUISearchBarを初めて使用し、単語を検索するためのコードをいくつか持っています。

- (void)searchTableView
{
NSLog(@"Searching...");
NSString *searchText = searchBar.text;

NSMutableArray *tempSearch = [[NSMutableArray alloc] init];

for (NSDictionary *item in items) {

    if ([[item objectForKey:@"en"] isEqualToString:searchText]) {
        NSLog(@"Found");

        [tempSearch addObject:item];
    }
}

searchArray = [tempSearch copy];
}

それは機能しますが、問題は完全な単語に対してのみ機能することです(たとえば、textLabelinUITableViewCellがテキスト「something」で「something」と入力するとUISearchBar、この行が返されますが、「some」と入力すると行が表示されます。完全な単語は「some」で、「something」は表示されません)。私の方法で正しいテキストを検索するにはどうすればよいですか?

4

2 に答える 2

1

NSPredicateあなたを使用すると、検索を少し簡単にすることができます:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"en BEGINSWITH %@", searchText];
NSArray *tempSearch = [items filteredArrayUsingPredicate:predicate];

大文字と小文字を区別しない検索が必要な場合は、に置き換えBEGINSWITHBEGINSWITH[c]ください。

詳細については、「述語プログラミングガイド」の「述語の使用」を参照してください。

于 2013-01-09T19:53:05.967 に答える
0

わかりました。何かありますが、100%正しくありません。

for (NSDictionary *item in items) {

    NSRange range = [[item objectForKey:@"en"] rangeOfString : searchText];
    if (range.location != NSNotFound) {

        NSLog(@"Found");

        [tempSearch addObject:item];
    }
}

「e」と入力すると、「some」、「something」、「else」が表示されます。「else」のみが返されるのは正しいと思います。

わかりました。

    if (range.location != NSNotFound && range.location == 0) {
于 2013-01-07T23:21:59.797 に答える