Получение сообщения об ошибке «NAN» в UITextField - PullRequest
1 голос
/ 09 августа 2011

У меня серьезные проблемы с сообщением об ошибке в UITextField. У меня есть настройка отправителя идентификатора кнопки IBAction, чтобы при касании UITextField и касании кнопки она добавляла значение +1 к выбранному UITextField. Моя проблема в том, что мой UITextField, который я настроил, чтобы получить процент между двумя UITextfields, выдает мне сообщение об ошибке «NAN», когда я нажимаю на другие UITextFields. Я думал, что эту проблему решил, пока не добавил больше кода. Вот мой текущий код:

- (IBAction)buttonTap:(id)sender { 
    int value = [currentText.text intValue] + 1;
    currentText.text = [NSString stringWithFormat:@"%d",value];

    int n7 = [tex.text intValue]; 
    int n8 = [tex2.text intValue];
    int n9 = [tex3.text intValue];
    int n10 = [tex4.text intValue];
    int n11 = [tex5.text intValue];
    int n12 = [tex6.text intValue];
    int r = n7 + n8 + n9 + n10 + n11 + n12;
    NSString *rn = [NSString stringWithFormat:@"%d",r];
    [tex13 setText:rn]; 

    int n1 = [tex7.text intValue]; 
    int n2 = [tex8.text intValue];
    int n3 = [tex9.text intValue];
    int n4 = [tex10.text intValue];
    int n5 = [tex11.text intValue];
    int n6 = [tex12.text intValue];
    int s = n1 + n2 + n3 + n4 + n5 + n6;
    NSString *sn = [NSString stringWithFormat:@"%d",s];
    [tex14 setText:sn]; 



    float firstFloat = [self.tex15.text floatValue]; 
    float secondFloat = [self.tex16.text floatValue]; 
    float answer = secondFloat / firstFloat * 100; 
    self.tex20.text = [NSString stringWithFormat:@"%.1f%%",answer];   
}

1 Ответ

1 голос
/ 09 августа 2011

Это NAN или NaN?NaN означает не число и будет напечатано, когда результат вашей математики приведет к чему-то, что не может быть выражено численно.Как указано в комментарии, деление на ноль даст вам NaN.

Обращаться к нему довольно просто: определите, где вы делите на ноль или что-то, что вызывает NaN, и используйте if / elseзаявления для проверки этих значений.Затем подставьте новое значение или передайте строку сообщения об ошибке метке, объясняющей ситуацию.

edit:

Это может выглядеть примерно так:

    float firstFloat = [self.tex15.text floatValue]; 
    float secondFloat = [self.tex16.text floatValue]; 

    NSString *labelOutput;

    if (firstFloat == 0.0)
    {
        labelOutput = NSLocalizedString(@"Error", @"Error while dividing by zero");
    }

    else 
    {
        float answer = secondFloat / firstFloat * 100; 
        labelOutput = [NSString stringWithFormat:@"%.1f%%",answer];

    }

    self.tex20.text = labelOutput;
...