2012-04-17 6 views
0

テキストボックスに特定のテキストが含まれているかどうかをチェックする1つのメインif文を含むiOSアプリケーションを作成しようとしています。私は特定の単語の複数のインスタンスを確認したいと思いますが、これはアプリのパフォーマンスを大幅に低下させるため、複数のif文を実行したくありません。より速くif文

単語がNSArrayの単語の単語と一致するかどうかを確認し、そうであれば、別のテキストボックスにその単語に関連付けられたNSStringを返しますか?

+2

あなたが考える方法が遅くなり、それを書き、それが遅い場合は、コードを投稿してください。それはあなたが思うほど遅くないかもしれません - 何語話していますか? –

+2

複数の 'if'文をテストして本当に遅いかどうか確認しましたか?それは非常にありそうにないので.... –

+0

数百になるでしょう。それは質疑応答のようなものです。テキストボックスに質問をし、goを押してテキストボックスに単語が存在するかどうかを調べ、見つかった場合は値 –

答えて

4

あなたは、あなたがその単語が入力されたときに返さたいNSStringに対してマッピングさに対してチェックされている単語のNSDictionary作成することができます:あなたはかどうかをテストすることができますので、リストを反復処理するには:

NSDictionary *words = [[NSDictionary alloc] initWithObjectsAndKeys: 
    @"word1", @"result1", 
    @"word2", @"result2", 
    /*etc*/ 
    nil]; 

NSString *wordFromTextBox = ...; 
NSString *result = [words objectForKey:keyword]; 
if (result != nil) 
{ 
    // use result 
} 
else 
{ 
    // word wasn't something we expected 
} 

// Some time later 
[words release]; 

EDITをがテキストボックスに含まれている、あなたは次の操作を行うことができ、キーワード(wordsを想定し、wordFromTextBoxがセットアップされている以前のように):

NSEnumerator *enumerator = [words keyEnumerator]; 
while ((NSString *keyword = [enumerator nextObject]) != nil) 
{ 
    if ([wordFromTextBox rangeOfString:keyword].location != NSNotFound) 
    { 
     NSLog(@"The text box contains keyword '%@'", keyword); 
     NSString *result = [words objectForKey:wordFromTextBox]; 
     // Use the result somehow 
     break; 
    } 
} 
+0

完璧、ありがとう! –

+0

@ objc-obsessive私は最初の編集で 'alloc'を逃しました!私は今それを修正しました。 – trojanfoe

+0

"word1"が検索テキストボックスに含まれているかどうかを確認するにはどうすればいいですか?すなわち、これは依然としてこれを検出する。 "これは他の単語を持っていても" word1 "です。 –

1

私はNSMを使用したいですutableDictionary/NSDictionary。辞書のキーはあなたが探している単語になります。値は返す言葉です。辞書の設定が完了したら、[dict valueForKey:textbox.text]と呼んでください。エントリがそこにない場合、dictはnilを返すので、その条件をテストできます。全体として、これはおそらく最も速い方法だと思います。

1

配列、 のためにあなたは、このコードからアイデアを得ることができます。

NSArray* myArray = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil]; 
NSString* stringToSearch = @"four"; 
NSUInteger indexPositionInArray = [myArray indexOfObject:stringToSearch]; 
NSLog(@"position in array: %i", indexPositionInArray); 
if (indexPositionInArray != NSNotFound) { 
    NSLog(@"String found in array: %@", [myArray objectAtIndex:indexPositionInArray]); 
} 

NSString* stringToSearch2 = @"fourrrr"; 
NSUInteger indexPositionInArray2 = [myArray indexOfObject:stringToSearch2]; 
NSLog(@"position in array: %i", indexPositionInArray2); 
if (indexPositionInArray2 != NSNotFound) { 
    NSLog(@"String found in array: %@", [myArray objectAtIndex:indexPositionInArray]); 
} 
関連する問題