How to convert an NSString into an NSNumber
nsnumber, nsstring, objective-c, primitive-types
Solution
Use an `NSNumberFormatter`:
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [f numberFromString:@"42"];
If the string is not a valid number, then `myNumber` will be `nil`. If it is a valid number, then you now have all of the `NSNumber` goodness to figure out what kind of number it actually is.
Problem
How can I convert a `NSString` containing a number of any primitive data type (e.g. `int`, `float`, `char`, `unsigned int`, etc.)? The problem is, I don't know which number type the string will contain at runtime. I have an idea how to do it, but I'm not sure if this works with any type, also unsigned and floating point values: ``` long long scannedNumber; NSScanner *scanner = [NSScanner scannerWithString:aString]; [scanner scanLongLong:&scannedNumber]; NSNumber *number = [NSNumber numberWithLongLong: scannedNumber]; ``` Thanks for the help.