Search code examples
iosintrospectionnsnumber

How can I determine whether a TextField contains a numeric string?


I get a value from a TextField and I need to check if there's a number in it. Whether it's a float or an integer doesn't really matter, but definitely a "Number"

How can I catch this?

This is what I'm doing so far - even if the obj is 123 (actually a number), the condition is false, so I can't get into the if. I already tried NSValue and Data, but with the same results.

id obj = self.textArea.text;

if ([obj isKindOfClass:[NSNumber class]]) {
    self.weight = [NSNumber numberWithFloat:([self.textArea.text floatValue])];

Solution

  • The text of a text field will ALWAYS be a NSString since that is how the class was designed.

    Your task, then, is to convert it into a NSNumber. The best way to do this is to use a number formatter like this:

    NSNumberFormatter *formatter = [NSNumberFormatter new];
    self.weight = [formatter numberFromString:self.textArea.text];
    if (!self.weight) {
        // No valid number was found.
    }