Hello.
In objective c, how can i check if a string/NSNumber is an integer or int
Hello.
In objective c, how can i check if a string/NSNumber is an integer or int
You can use the intValue method on NSString:
NSString *myString = @"123";
[myString intValue]; // returns (int)123
Here is the Apple documentation for it - it will return 0 if it's not a valid integer: http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/intValue
Hope that helps!
To check if a NSNumber if an integer try:
const char *t = [(NSNumber *)value objCType];
if (strcmp("i", t) == 0); // YES if integer
If you're trying to determine whether or not an NSString
has a numeric value or not, try using NSNumberFormatter
.
BOOL stringIsNumeric(NSString *str) {
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSNumber *number = [formatter numberFromString:str];
[formatter release];
return !!number; // If the string is not numeric, number will be nil
}
if( [(NSString *)someString intValue] )
{ /* Contains an int fosho! */ }
if( [(NSNumber *)someNumber intValue] )
{ /* Contains an int wich is not 0.... :D */ }
You can ofcourse first determine whether its a NSString or NSNumber by using
[Object isKindOfClass:[NSString class]] etc...
– boolValue – charValue – decimalValue – doubleValue – floatValue – intValue – integerValue – longLongValue – longValue – shortValue – unsignedCharValue – unsignedIntegerValue – unsignedIntValue – unsignedLongLongValue – unsignedLongValue – unsignedShortValue
are all methods of NSNumber to get its values. NSString got a few similar ones.