80

我正在尝试从 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";
4

7 回答 7

181

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

[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert]
于 2011-02-11T17:41:16.723 回答
178

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

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

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

于 2012-12-04T13:05:56.043 回答
33

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

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

if([myT isEqualToString:@"10"] || [myT isEqualToString:@"11"] || [myT isEqualToString:@"12"])
于 2009-07-09T16:03:14.430 回答
12

==不应用于比较if. 用于比较它们NSStringisEqualToString:

于 2009-07-09T15:58:32.410 回答
8
int val1 = [textBox1.text integerValue];
int val2 = [textBox2.text integerValue];

int resultValue = val1 * val2;

textBox3.text = [NSString stringWithFormat: @"%d", resultValue];
于 2012-02-02T05:13:12.250 回答
5

只需转换intNSString 使用:

  int x=10;

  NSString *strX=[NSString stringWithFormat:@"%d",x];
于 2016-06-24T10:24:21.360 回答
0

点语法可能更快!

@(intValueDemo).stringValue 

例如

int intValueDemo  = 1;
//or
NSInteger intValueDemo = 1;

//So you can use dot grammar 
NSLog(@"%@",@(intValueDemo).stringValue);
于 2020-11-24T08:36:02.170 回答