Как преобразовать из 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 ответов:
закомментированная версия является более правильным способом сделать это.
Если вы используете
==
оператор на строках, вы сравниваете адреса строк (где они выделены в памяти), а не значения строк. Это очень иногда полезно (это указывает на то, что у вас есть точно такой же объект 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:
сравнивать их.