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

joh*_*ohn 72 int objective-c nsstring

我想尝试从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";
Run Code Online (Sandbox Code Playgroud)

Sco*_*ott 167

如果您只需要按照建议对字符串使用int,我发现最简单的方法是执行如下操作:

[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert]
Run Code Online (Sandbox Code Playgroud)


Rob*_*ert 159

你可以使用文字,它更紧凑.

NSString* myString = [@(17) stringValue];
Run Code Online (Sandbox Code Playgroud)

(框作为NSNumber并使用其stringValue方法)

  • @RavindranathAkila - `stringWithFormat`更灵活/更强大,一般应该使用.如果您正在进行简单的转换,这只是一个捷径. (3认同)

gra*_*rks 32

注释掉的版本是更正确的方法.

如果==在字符串上使用运算符,则需要比较字符串的地址(它们在内存中分配的位置)而不是字符串的值.这非常偶然有用(它表示你有完全相同的字符串对象),但99%的时间你想要比较值,你喜欢这样:

if([myT isEqualToString:@"10"] || [myT isEqualToString:@"11"] || [myT isEqualToString:@"12"])
Run Code Online (Sandbox Code Playgroud)


Ter*_*cox 12

==不应该用来比较你的对象if.对于NSString使用isEqualToString:对它们进行比较.


Amo*_*mol 8

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

int resultValue = val1 * val2;

textBox3.text = [NSString stringWithFormat: @"%d", resultValue];
Run Code Online (Sandbox Code Playgroud)


Ash*_*ale 5

只需转换intNSString 使用:

  int x=10;

  NSString *strX=[NSString stringWithFormat:@"%d",x];
Run Code Online (Sandbox Code Playgroud)