0

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

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

4

3 に答える 3

4

その単語が入力されたときに返されるNSDictionaryに対してマップされた、チェックしている単語の を作成できます。NSString

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];

編集:キーワードがテキストボックスに含まれているかどうかをテストできるようにリストを反復処理するには、次のようにします (以前と同じように設定されていると仮定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;
    }
}
于 2012-04-17T15:46:07.950 に答える
1

NSMutableDictionary/NSDictionary を使用します。辞書のキーは、探している単語になります。値は、返したい単語になります。辞書のセットアップが完了したら、 を呼び出すだけ[dict valueForKey:textbox.text]です。エントリがそこにない場合、dict は nil を返すため、その条件をテストできます。全体として、これがおそらく最も速い方法だと思います。

于 2012-04-17T15:46:53.843 に答える
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]);
}
于 2012-04-17T15:50:00.920 に答える