Iphone 比较int和string
可能重复:Iphone 比较int和string,iphone,objective-c,ios,nsstring,int,Iphone,Objective C,Ios,Nsstring,Int,可能重复: 我想比较int和string,但我的代码无法工作。这是我的密码: NSLog(@"enterPressed was called"); int answer = firstNumber + secondNumber; NSLog(@"Real Answer: %d", answer); NSString *numberFromTextField = inputTextField.text; NSLog(@"Number From Text Field: %@", numberFr
我想比较int和string,但我的代码无法工作。这是我的密码:
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 Mathquick[10728:c07]被调用
2012-12-09 13:10:55.087数学测验真实答案:60
2012-12-09 13:10:55.088 Mathquick[10728:c07]文本字段中的数字:60
为什么不说“正确!”?您需要将其作为
if ([numberFromTextField intValue] == answer)
(numberFromTextField==[nsstringstringwithformat:@“%d”,answer])
正在比较两个字符串的内存地址。不是价值观。以下内容将为您提供正确的值
if ([numberFromTextField isEqualToString:[NSString stringWithFormat:@"%d", answer]])
您不能使用
=
比较两个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 <代码>来确定输入是否有效,然后以任何方式将其与<代码>回答< /代码>进行比较。 ouCh。这很痛。我是说,说真的。在尝试制作有史以来最好的iOS应用程序(TM)之前,请正确学习C并阅读一些一般的良好编程实践。我正在自学Objective-C。这就是学习过程。在我的问题中,我没有说过我是专家,所以不要批评我不知道专家会知道的一切。@H2CO3我不同意。我自己自学成才,我认为一个很好的学习方法就是投入其中,边走边思考。当然,在此过程中,你必须学习一些好的编程实践,但你会更有动力,而且你会更好地记住所学内容,如果你“就这么做”。@DOK“自学成才”——我也是。我在学校从来没有学过这个。但是我没有这样的问题(但在我的谷歌搜索历史中有很多)。@kiamlaluno:C没有NSString
,但它有=
操作符和指针,=
和指针的行为在C和Objective-C中是一样的:)