如何在目标C中从int转换为字符串:示例代码


77

我正在尝试从int转换为字符串,但是遇到了麻烦。我通过调试器跟踪了执行过程,字符串“ myT”获得了“ sum”的值,但是如果“ sum”为10、11、12,则“ if”语句无法正常工作。我不应该使用原始int类型存储数字吗?另外,我尝试的两种方法(请参见注释掉的代码)都无法遵循'if'语句的真实路径。谢谢!

int x = [my1 intValue]; 
    int y = [my2 intValue]; 
    int sum = x+y;
    //myT = [NSString stringWithFormat:@"%d", sum];
    myT = [[NSNumber numberWithInt:sum] stringValue];

    if(myT==@"10" || myT==@"11" || myT==@"12")
        action = @"numGreaterThanNine";

6
您将整数放入字符串中是否有原因?编写测试非常容易,例如if (sum >= 10 && sum <= 12)
Alex

1
如果答案波纹管迷惑你,看看此相关的问题stackoverflow.com/questions/3414644/...

Answers:


32

注释掉的版本是执行此操作的更正确方法。

如果==对字符串使用运算符,则是在比较字符串的地址(在内存中分配的地址),而不是字符串的值。偶尔这很有用(它表明您拥有完全相同的字符串对象),但是有99%的时间要比较这些值,您可以这样做:

if([myT isEqualToString:@"10"] || [myT isEqualToString:@"11"] || [myT isEqualToString:@"12"])

轻微的错字,一个缺失:在第二个比较中。
marcc

174

如果您只需要按照建议的方式将int转换为字符串,我发现最简单的方法如下:

[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert]

169

您可以使用文字,它更紧凑。

NSString* myString = [@(17) stringValue];

(以NSNumber形式包装,并使用其stringValue方法)


3
@RavindranathAkila-stringWithFormat更加灵活/强大,应该在一般情况下使用。如果您只是进行简单的转换,这只是捷径。
罗伯特


8
int val1 = [textBox1.text integerValue];
int val2 = [textBox2.text integerValue];

int resultValue = val1 * val2;

textBox3.text = [NSString stringWithFormat: @"%d", resultValue];

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.