2013-04-01 14 views
20

Also dieses Problem hat mich viel zu lange verblüfft. Ich habe eine UIAlertView mit einer textField drin, und ich brauche den Wert textField als NSNumber. Aber alles, was ich versuche, gibt mir zufällige Zahlenfolgen. Jede Hilfe würde sehr geschätzt werden.NSString zu 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

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

+0

Ich sah, dass, bevor Sie fragen. Aber als ich diesen Code ausgeführt habe, habe ich: '159348080' – Andrew

+0

posten Sie bitte Ihren Code, wo Sie Wert von textfiled bekommen –

Antwort

48

einmal dieses man sehen,

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

Ich denke, es war die 'numberWithInteger' und' integerValue' Teile, die es aus irgendeinem Grund funktioniert haben. Wie auch immer, vielen Dank. – Andrew

3

Hier ist ein Beispiel mit einer Ganzzahl und NSNumber Literale verwenden. Sie können auch die floatValue Methode verwenden, wenn Ihre Zeichenfolge ein Float enthält.

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

Ich versuchte dies, und bekam: '159348080', wenn ich das Ergebnis protokollierte – Andrew

+0

Sollte nicht die zweite Zeile, *** NSNumber * Nummer = [NSNummer numberWithInt: [String intValue]]; * **? – EmptyStack

+0

Dies verwendet NSNumber-Literale, die dasselbe bedeuten. –

3

@Aaron Wojnowski,

Verwendung NSNumberFormatter. Wenn Sie möchten, können Sie auch Gruppierungstrennzeichen festlegen.

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); 

stattdessen folgende versuchen Sie es mit:

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

Da Sie NSNumber (Object) konvertieren. Sie sollten den Objektspezifikator% @ in Ihrer NSLog-Anweisung verwenden.