2011-01-24 6 views
3

私はSearchControllerでNSComparisonResultを使用しています:私は、文字列を検索する場合、それはその文字列で始まる場合NSComparisonResult検索文字列の一部ですか?

for (Annotation *ano in listContent) { 
     NSComparisonResult result = [ano.title compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])]; 
     if (result == NSOrderedSame) { 
      [self.filteredListContent addObject:ano]; 
     } 
    } 

が、それは結果だけを検索します。

録音は "マイアートギャラリー" "マイ・アート・ギャラリー" <ため

  • 検索です--- は

  • 見つかり、 "マイ" <ため

  • 検索---発見します

  • 「アート」を検索< ---見つからない

  • 私は上記示したように私は、文字列の部分を見つけることができるように、「ギャラリー」<のための10
  • 検索---見つかりません

は、どのように私は私のコードを変更することができますか?

NSComparisonResult result1 = [dummyString compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:[dummyString rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)]]; 
if (result1 == NSOrderedSame) 
{ 
[self.filteredListContent addObject:dummyString]; // this can vary drastically 
} 

注:サブチェックを行うにまっすぐ進む方法があり

for (Annotation *ano in listContent) { 

     NSRange range = [ano.title rangeOfString:searchText options:NSCaseInsensitiveSearch]; 
     if (range.location != NSNotFound) { 
      [self.filteredListContent addObject:ano]; 
     } 

    } 

答えて

12

は、私は私は基本的に部分文字列を検索することができNSRangeを使用して終了私が使用していますこれはUISearchDisplayControllerとこれは私のために完全に働いた。

これは将来的に役立ちます。

おかげthis post(UPDATE:このリンクは、もはや動作しません。)へ

関連する問題