В цели c, как я могу проверить, является ли строка / NSNumber целым числом или целым
Вы можете использовать метод intValue в NSString:
NSString *myString = @"123";
[myString intValue]; // returns (int)123
Вот для него документация Apple - он вернет 0, если это недействительное целое число: http://developer.apple.com/mac/library /documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/intValue
Надеюсь, это поможет!
Если вы пытаетесь чтобы определить, имеет ли NSString
числовое значение, попробуйте использовать 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
}
Чтобы проверить, является ли NSNumber целочисленным, попробуйте:
const char *t = [(NSNumber *)value objCType];
if (strcmp("i", t) == 0); // YES if integer
if( [(NSString *)someString intValue] )
{ /* Contains an int fosho! */ }
if( [(NSNumber *)someNumber intValue] )
{ /* Contains an int wich is not 0.... :D */ }
Вы, конечно, можете сначала определить, является ли это NSString или NSNumber, используя
[Object isKindOfClass:[класс NSString]] и т.д....
- boolValue - charValue - десятичное значение - doubleValue - floatValue - intValue - целое значение - длинное значение - длинное значение - короткое значение - unsignedCharValue - unsignedIntegerValue - unsignedIntValue - unsignedLongLongValue - unsignedLongValue - unsignedShortValue
- все это методы NSNumber для получения его значений. У NSString есть несколько похожих.