Как преобразовать из int в string в objective c: пример кода


Я пытаюсь преобразовать int в строку, но у меня возникли проблемы. Я следил за выполнением через отладчик, и строка " myT "получает значение "sum", но оператор " if "не работает правильно, если" sum " равен 10,11,12. Не следует ли использовать примитивный тип 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 64

6 ответов:

закомментированная версия является более правильным способом сделать это.

Если вы используете == оператор на строках, вы сравниваете адреса строк (где они выделены в памяти), а не значения строк. Это очень иногда полезно (это указывает на то, что у вас есть точно такой же объект string), но в 99% случаев вы хотите сравнить значения, которые вам нравятся:

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

Если вам просто нужно int в строку, как вы предлагаете, я нашел самый простой способ сделать, как показано ниже:

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

вы можете использовать литералы, это более компактно.

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

(коробки как NSNumber и использует его stringValue способ)

== Не следует использовать для сравнения объектов в вашем if. Ибо NSString использовать isEqualToString: сравнивать их.

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

int resultValue = val1 * val2;

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

просто преобразовать int to NSString использование:

  int x=10;

  NSString *strX=[NSString stringWithFormat:@"%d",x];