2

テーブルビューと検索バーを使用してビューを作成しました。文字列の最初の単語を検索すると、完全に機能します。残念ながら、文字列内で別の単語を検索した場合は機能しません。したがって、テキストを検索する場合:bal。

そして、私は次の文字列を確認する必要があります:緑のバル。何も見つかりません。

私は現在、検索バーのテキストを次のコードのデータと比較しています。

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{

[self.filteredListContent removeAllObjects]; // First clear the filtered array.

for (Product *product in self.listContent)
{

    NSComparisonResult result = [product.name compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
    if (result == NSOrderedSame)
    {
        [self.filteredListContent product];
    }
}
NSMutableSet *tempSet = [NSMutableSet setWithArray:self.filteredListContent];
self.filteredListContent = [NSMutableArray arrayWithArray:[tempSet allObjects]];
}

この問題を解決するにはどうすればよいですか?

どんな助けや提案もいただければ幸いです!

4

1 に答える 1

2

compare:options:range:このコードは、次のメソッドを使用して、完全一致(大文字と小文字および発音区別符号の影響を受けない)を探しますNSString

NSComparisonResult result = [product.name compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame)
{
    [self.filteredListContent product];
}

問題の説明を前提として、文字列が別の文字列内に含まれていることを確認します。代わりに次のrangeOfString:options:方法を使用してください。NSString

NSRange range = [product.name rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
if (range.length > 0)
{
    [self.filteredListContent product];
}
于 2012-05-25T19:06:58.223 に答える