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中是一样的:)