Для NSString, если вы используете intValue / integerValue, существуют определенные случаи, которые не обрабатываются, поскольку учитывается только начало строки.
Например, @ "bl3h" не считалось целым числом, но@ "3h" дал вывод 3
Мое решение для NSString:
Использование:
NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:strName];
NSCharacterSet *numSet = [NSCharacterSet decimalDigitCharacterSet];
if([numSet isSupersetOfSet: charSet])
{
// It is an integer (or it contains only digits)
}