3

こんにちは、私はtableviewを作成するマスタ配列を持っており、検索結果のフィルタ配列があります。両方とも、以下の方法でうまく動作します。私のテーブルビューと検索ディスプレイの配列は、以下の問題を除いて、このコードブロックの下でうまくいきます。iOSのsearchDisplayコントローラを使用して単語や文字の組み合わせを検索する

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

{

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



for (product *new in parserData) 
{ 

    //Description scope 
    if ([scope isEqualToString:@"Description"]) 

    { 
     NSRange result = [new.description rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)]; 

     if (result.location != NSNotFound) 
     { 
      [self.filteredListContent addObject:new]; 
     } 
    } 


    //Product scope 
    if ([scope isEqualToString:@"Product"]) 

    { 
     NSRange result = [new.item rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)]; 

     if (result.location != NSNotFound) 
     { 
      [self.filteredListContent addObject:new]; 
     } 
    } 
} 

}

私は何を達成したいことはこれです。私は、LMD-2451 TDプロフェッショナル3D LCDモニタと呼ばれるアイテムをマスタアレイに持っています。 TDプロフェッショナルTDプロTDを検索することができ、いずれの場合も上記の正しい項目が返されます。しかし、Pro TDを検索しても、結果は表示されません。私が直面している問題は、ユーザーが製品のタイトルや説明の順序を知ることができないことですか?だから私はこれを論理的に行う何かを実装する必要があります。私は本当に何をすべきかと固執しています。参照

NSMutableArrayの* parserDataについては

。 //完全なメインフル配列 NSMutableArray * filteredListContent; //検索結果の配列

ご意見をいただければ幸いです。

答えて

2

componentsSeperatedByString:@" "を検索文字列に使用して、2つの文字列(@"Pro"および@"TD")の配列に分割するのはどうですか? rangeOfString:を使用してアレイをループして、アレイ内のすべてのコンポーネントがnew.itemにあることを確認します。

//Product scope 
if ([scope isEqualToString:@"Product"]) 
{ 
    // Split into search text into separate "words" 
    NSArray * searchComponents = [searchText componentsSeparatedByString: @" "]; 
    BOOL foundSearchText = YES; 

    // Check each word to see if it was found 
    for (NSString * searchComponent in searchComponents) { 
     NSRange result = [new.item rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)]; 
     foundSearchText &= (result.location != NSNotFound); 
    } 

    // If all search words found, add to the array 
    if (foundSearchText) 
    { 
     [self.filteredListContent addObject: new]; 
    } 
} 
+0

申し訳ありませんが、私はあなたのコンセプトを得ていますが、私はこれをどのように実装するかを考え出すのに苦労しています。最初にparserData配列を分割する必要がありますか?簡単な例がありますか? –

+0

誰もがこれ以上私を助けることができますか? –

+0

私の答えを更新しました、遅れてごめんなさい! –

関連する問題