NSString es un número entero?

¿Cómo verificar si el contenido de un NSString es un valor entero? ¿Hay alguna manera disponible?

Debe haber una forma mejor de hacer algo como esto:

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

Puede usar los métodos -intValue o -integerValue . Devuelve cero si la cadena no comienza con un entero, lo cual es un poco vergonzoso ya que cero es un valor válido para un entero.

Una mejor opción podría ser usar [NSScanner scanInt:] que devuelve un BOOL indica si encontró o no un valor adecuado.

Algo como esto:

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

Basándose en una respuesta de @kevbo, esto buscará enteros> = 0:

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

Una versión rápida de lo anterior:

 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" } 

¡¡No olvide los números con punto decimal !!!

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