NSString é inteiro?

Como verificar se o conteúdo de um NSString é um valor inteiro? Existe alguma maneira prontamente disponível?

Tem que haver um jeito melhor de fazer algo assim:

- (BOOL)isInteger:(NSString *)toCheck { if([toCheck intValue] != 0) { return true; } else if([toCheck isEqualToString:@"0"]) { return true; } else { return false; } } 

Você pode usar os methods -integerValue ou -integerValue . Retorna zero se a string não começar com um inteiro, o que é uma pena, já que zero é um valor válido para um inteiro.

Uma opção melhor pode ser usar o [NSScanner scanInt:] que retorna um BOOL indicando se ele encontrou ou não um valor adequado.

Algo assim:

 NSScanner* scan = [NSScanner scannerWithString:toCheck]; int val; return [scan scanInt:&val] && [scan isAtEnd]; 

Com base em uma resposta do @kevbo, isso irá verificar se há inteiros> = 0:

 if (fooString.length <= 0 || [fooString rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location != NSNotFound) { NSLog(@"This is not a positive integer"); } 

Uma versão rápida do acima:

 func getPositive(incoming: String) -> String { if (incoming.characters.count <= 0) || (incoming.rangeOfCharacterFromSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet) != nil) { return "This is NOT a positive integer" } return "YES! +ve integer" } 

Não esqueça números com ponto decimal !!!

 NSMutableCharacterSet *carSet = [NSMutableCharacterSet characterSetWithCharactersInString:@"0123456789."]; BOOL isNumber = [[subBoldText stringByTrimmingCharactersInSet:carSet] isEqualToString:@""];