if语句更快

时间:2012-04-17 15:38:25

标签: iphone objective-c ios xcode if-statement

我正在尝试创建一个iOS应用程序,它涉及一个主要的if语句来检查文本框是否包含某些文本。我想检查某个单词的多个实例,但我不想做多个if语句,因为这会大大降低应用程序的性能。

如何判断一个单词是否与NSArray中单词的单词匹配,如果是,则在另一个文本框中返回与该单词相关联的NSString?

3 个答案:

答案 0 :(得分: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];

编辑:要迭代列表,以便测试关键字是否包含在文本框中,您可以执行以下操作(假设wordswordFromTextBox已设置像以前一样):

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

答案 1 :(得分:1)

我使用的是NSMutableDictionary / NSDictionary。字典键将是您要查找的单词。值将是您希望返回的单词。完成字典设置后,只需拨打[dict valueForKey:textbox.text]即可。如果条目不在那里,则dict将返回nil,因此您可以测试该条件。总而言之,我认为这可能是最快捷的方式。

答案 2 :(得分: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]);
}
相关问题