我正在尝试创建一个iOS应用程序,它涉及一个主要的if语句来检查文本框是否包含某些文本。我想检查某个单词的多个实例,但我不想做多个if语句,因为这会大大降低应用程序的性能。
如何判断一个单词是否与NSArray中单词的单词匹配,如果是,则在另一个文本框中返回与该单词相关联的NSString?
答案 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];
编辑:要迭代列表,以便测试关键字是否包含在文本框中,您可以执行以下操作(假设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;
}
}
答案 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]);
}