2013-04-01 10 views
20

Quindi questo problema mi ha lasciato perplesso troppo a lungo. Ho un UIAlertView con un textField in esso e ho bisogno del valore dello textField come NSNumber. Ma tutto ciò che provo mi dà stringhe casuali di numeri. Qualsiasi aiuto sarebbe molto apprezzato.NSString To NSNumber

int i = [[alertView textFieldAtIndex:0].text intValue]; 
NSNumber *number = [NSNumber numberWithInt:[[alertView textFieldAtIndex:0].text integerValue]];  


int number = [[dict objectForKey:@"integer"] intValue]; 

NSLog(@"text = %@", [alertView textFieldAtIndex:0].text); 


NSString *alertText = [alertView textFieldAtIndex:0].text; 

NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
[f setNumberStyle:NSNumberFormatterNoStyle]; 
NSNumber * myNumber = [f numberFromString:[alertView textFieldAtIndex:0].text]; 


NSNumber *number = @([alertText intValue]); 

NSString *string = @"54"; 
NSNumber *number = @([string intValue]); 

NSLog(@"here we are: %i", number); 
+0

correlati: http://stackoverflow.com/questions/1448804/how-to-convert-an-nsstring-into-an-nsnumber –

+0

L'ho visto prima di chiedere. Ma quando ho eseguito quel codice, ho ottenuto: '159348080' – Andrew

+0

per favore pubblica il tuo codice, dove stai ottenendo valore da textfiled –

risposta

48

una volta vedere questo,

NSString *string = @"123"; 
    NSNumber *aNum = [NSNumber numberWithInteger: [string integerValue]]; 
    NSLog(@"%@",aNum);//NSString to NSNumber 
    NSInteger number=[string intValue]; 
    NSLog(@"%i",number);//NSString to NSInteger 
+0

Penso che siano state le parti 'numberWithInteger' e' integerValue' che hanno funzionato per qualsiasi motivo. Comunque, grazie mille. – Andrew

3

Ecco un esempio con un numero intero e utilizzando i valori letterali NSNumber. È anche possibile utilizzare il metodo floatValue se la stringa contiene un float.

NSString *string = @"54"; 
NSNumber *number = @([string intValue]); 
+0

Ho provato questo, e ho ottenuto: '159348080' quando ho registrato il risultato – Andrew

+0

Non dovrebbe essere la seconda riga, *** NSNumber * numero = [NSNumero numeroWithInt: [stringa intValue]]; * **? – EmptyStack

+0

Questo utilizza i valori letterali NSNumber che equivalgono alla stessa cosa. –

3

@Aaron Wojnowski,

Usa NSNumberFormatter. Se lo desideri, puoi anche impostare il separatore di raggruppamento.

NSNumberFormatter *formatString = [[NSNumberFormatter alloc] init]; 
stringValue = textfield.text; 
    NSNumber *reqNumber = [formatString numberFromString:stringValue]; 
7
NSString *string = @"54"; 
NSNumber *number = @([string intValue]); 
NSLog(@"here we are: %i", number); 

cercare invece utilizzando il seguente:

NSLog(@"here we are: %@", number); 

Dal momento che si sta convertendo a NSNumber (Object). Dovresti usare l'identificatore di oggetto% @ nella tua dichiarazione NSLog.