0
我已经设置了一个充满单词作为对象的数组。我尝试着将用户在uitextfield中输入的内容与数组中的对象进行比较,以查看它们是否匹配。读取文本字段并与数组对象进行比较?
我已捕获到一个委托方法中的uitextview的指针,但我无法将文本字段内容与数组中的对象进行比较。我认为这是因为一个是字符串,一个是数组对象?我需要以某种方式投射其中一个变量吗?
感谢
马丁
我已经设置了一个充满单词作为对象的数组。我尝试着将用户在uitextfield中输入的内容与数组中的对象进行比较,以查看它们是否匹配。读取文本字段并与数组对象进行比较?
我已捕获到一个委托方法中的uitextview的指针,但我无法将文本字段内容与数组中的对象进行比较。我认为这是因为一个是字符串,一个是数组对象?我需要以某种方式投射其中一个变量吗?
感谢
马丁
假设你要测试用户的输入是否匹配您的阵列中的任何成员,你应该做这样的事情:
NSString *input = textField.text;
BOOL wordFound = NO;
for(NSString *candidate in self.possibleWordsArray) {
if([input isEqual:candidate]) {
wordFound = YES;
break;
}
}
if(wordFound) {
...
}
else {
...
}
注:
我们一个重新比较输入字符串和数组中的每个成员。这为将字符串与数组进行匹配的想法提供了明确的含义。
当我们找到匹配的字符串时,我们将标志wordFound
设置为YES
,然后停止搜索(使用break
语句)。如果未找到匹配项,则wordFound
标志将保持其原始值NO
。
始终使用isEqual
来测试字符串之间的等同性,从来没有==
;后者通常会工作,但偶尔会中断。这是因为==
只测试两个指针是否指向相同的内存位置,而您可能在不同的内存位置有两个相同的字符串副本。
嗨大卫。非常感谢您的帮助。在我读到你的答案之前,我做了这个工作如果([textField.text isEqualToString:keepName]){ \t \t \t \t Success = YES; \t \t [self shootTarget]; \t \t \t } \t \t 否则{[自gameFail]; \t \t \t } \t \t 返回YES; – GuybrushThreepwood 2010-09-10 12:54:15