2009-07-09 3 views
60

Sto provando a convertire da un int a una stringa ma ho problemi. Ho seguito l'esecuzione tramite il debugger e la stringa 'myT' ha il valore di 'sum' ma l''if' non funziona correttamente se la 'somma' è 10,11,12. Non dovrei usare un tipo primitivo int per memorizzare il numero? Inoltre, entrambi i metodi che ho provato (vedere il codice commentato) non riescono a seguire il vero percorso dell'istruzione "se". Grazie!Come convertire da int a stringa nell'obiettivo c: esempio codice

int x = [my1 intValue]; 
    int y = [my2 intValue]; 
    int sum = x+y; 
    //myT = [NSString stringWithFormat:@"%d", sum]; 
    myT = [[NSNumber numberWithInt:sum] stringValue]; 

    if([email protected]"10" || [email protected]"11" || [email protected]"12") 
     action = @"numGreaterThanNine"; 
+6

C'è una ragione si sta mettendo il numero intero in una stringa? Sarebbe molto più facile scrivere il tuo test come 'if (sum> = 10 && sum <= 12)' – Alex

+1

Se le risposte qui sotto ti confondono, dai un'occhiata a questa domanda correlata: http://stackoverflow.com/questions/3414644/how-to-convert-integer-to-string-in-obiettivo-c-chiuso – Florin

risposta

30

La versione commentata è il modo più corretto per farlo.

Se si utilizza l'operatore == sulle stringhe, si confrontano gli indirizzi delle stringhe (in cui sono allocati in memoria) anziché i valori delle stringhe. Questo è molto occasionale utile (che indica la presenza di esattamente lo stesso oggetto string), ma il 99% del tempo che si desidera confrontare i valori, che si fa in questo modo:

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

Errore lieve, mancante: nel 2 ° confronto. – marcc

12

== non deve essere utilizzato per confrontare gli oggetti nel vostro if. Per NSString utilizzare isEqualToString: per confrontarli.

156

Se avete solo bisogno di un int a una stringa come lei suggerisce, ho trovato il modo più semplice è quello di fare come di seguito:

[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert] 
6
int val1 = [textBox1.text integerValue]; 
int val2 = [textBox2.text integerValue]; 

int resultValue = val1 * val2; 

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

si può usare letterali, è più compatta.

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

(Scatole come NSNumber e utilizza il suo metodo stringValue)

+3

@RavindranathAkila - 'stringWithFormat' è più flessibile/potente e dovrebbe essere usato in generale. Questa è solo una scorciatoia se è una semplice conversione che stai cercando. – Robert

+0

Grazie. In effetti, stavo cercando un approccio non verboso :-) –

3

semplicemente convertire int a NSString uso:

int x=10; 

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