我想比较一个int和一个字符串,但我的代码不起作用。这是我的代码:
NSLog(@"enterPressed was called");
int answer = firstNumber + secondNumber;
NSLog(@"Real Answer: %d", answer);
NSString *numberFromTextField = inputTextField.text;
NSLog(@"Number From Text Field: %@", numberFromTextField);
if (numberFromTextField == [NSString stringWithFormat:@"%d", answer]) {
NSLog(@"Correct!");
}
这是控制台:
2012-12-09 13:10:55.087 MathQuiz [10728:c07] enterPressed被称为
2012-12-09 13:10:55.087 MathQuiz [10728:c07]真实答案:60
2012-12-09 13:10:55.088 MathQuiz [10728:c07]文字字段数:60
为什么不说“正确!”?
答案 0 :(得分:2)
您不能使用==
来比较两个Objective-C对象,除非您想知道两个对象是否相同(即==
的两边指的是完全相同的对象,而不是两个具有相同值的不同对象。)
要比较字符串是否相等,您必须使用:
if ([str1 isEqualToString:str2])
// or, compare to a constant string:
if ([str1 isEqualToString:@"String 2"])
// or, compare to a string made up on the spot:
if ([str1 isEqualToString:[NSString stringWithFormat:@"%d", answer])
但是,在您的场景中,最好比较两个整数而不是两个字符串,所以要做到这一点,您需要将字符串从文本字段转换为整数:
int num = [numberFromTextField intValue];
if (num == answer)
{
NSLog(@"Correct!");
}
请注意,当字符串不包含有效数字时,intValue
将返回0,因此如果answer
为0,并且用户输入的数字无效,则将确定为在技术上不正确。在以任何方式将输入与NSNumberFormatter
进行比较之前,请考虑使用NSScanner
甚至是answer
来确定输入是否有效。
答案 1 :(得分:1)
您需要将其比较为
if ([numberFromTextField intValue] == answer)
(numberFromTextField == [NSString stringWithFormat:@"%d", answer])
正在比较两个字符串的内存地址。不是价值观。以下内容将为您提供正确的值,
if ([numberFromTextField isEqualToString:[NSString stringWithFormat:@"%d", answer]])