Як перетворити з int на рядок у об’єкті c: приклад коду


77

Я намагаюся перетворити з 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
Чи є причина, по якій ви вводите ціле число у рядок? Набагато простіше було б написати свій тест, якif (sum >= 10 && sum <= 12)
Алекс

1
Якщо наведені нижче відповіді вас бентежать, перевірте відповідне запитання: stackoverflow.com/questions/3414644/…
Флорін

Відповіді:


32

Закоментована версія - це більш правильний спосіб зробити це.

Якщо ви використовуєте ==оператор для рядків, ви порівнюєте адреси рядків (де вони виділені в пам'яті), а не значення рядків. Це дуже корисно (це вказує, що у вас точно такий самий рядковий об'єкт), але 99% часу ви хочете порівняти значення, які вам подобаються:

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

Невелика друкарська помилка, відсутність: у 2-му порівнянні.
marcc

175

Якщо вам просто потрібен int до рядка, як ви пропонуєте, я знайшов найпростіший спосіб зробити це, як показано нижче:

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

170

Ви можете використовувати літерали, це більш компактно.

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

( Поля як NSNumber і використовує метод stringValue )


3
@RavindranathAkila - stringWithFormatє більш гнучким / потужним і повинен використовуватися загалом. Це лише ярлик, якщо вам потрібна проста конверсія.
Роберт

12

==не слід використовувати для порівняння об'єктів у вашому if. Для NSStringвикористання , isEqualToString:щоб порівняти їх.


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

int resultValue = val1 * val2;

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


0

Крапкова граматика, можливо, швидша!

@(intValueDemo).stringValue 

наприклад

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

//So you can use dot grammar 
NSLog(@"%@",@(intValueDemo).stringValue);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.