我正在尝试创建一个 iOS 应用程序,其中涉及一个主要的 if 语句来检查文本框是否包含某些文本。我想检查某个单词的多个实例,但我不想执行多个 if 语句,因为这会大大降低应用程序的性能。
如何检查单词是否与 NSArray 中的单词匹配,如果匹配,则在另一个文本框中返回与该单词关联的 NSString?
我正在尝试创建一个 iOS 应用程序,其中涉及一个主要的 if 语句来检查文本框是否包含某些文本。我想检查某个单词的多个实例,但我不想执行多个 if 语句,因为这会大大降低应用程序的性能。
如何检查单词是否与 NSArray 中的单词匹配,如果匹配,则在另一个文本框中返回与该单词关联的 NSString?
您可以创建一个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;
}
}
我会使用 NSMutableDictionary/NSDictionary。字典键将是您要查找的单词。这些值将是您希望返回的单词。一旦你有了字典设置,只需调用[dict valueForKey:textbox.text]
. 如果条目不在那里,dict 将返回 nil,因此您可以测试该条件。总而言之,我认为这可能是最快的方法。
对于数组,你可以从这段代码中得到一个想法:
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]);
}