Если текстовые поля пусты, сделайте это для iPhone - PullRequest
0 голосов
/ 19 января 2010

У меня есть простой калькулятор, который работает, но моя проблема в том, что если пользователь не вводит какие-либо данные в поля, он все равно вычисляет.Я думал, что мог бы сделать следующее:

if (txtUserName.text == nil || txtUserName2.text == nil || txtUserName3.text == nil || txtUserName4.text == nil || txtUserName5.text == nil)
    {
        //error message 
        lblUserTypedName.text =@"Error - No Field Input";
    }
    else
    {
    lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk];
    }

Но это не работает вообще.Любая помощь, дающая мне знать, что я здесь упускаю, будет принята с благодарностью.Я хотел бы использовать ||так что даже если они введут все поля, кроме одного, они все равно поймают его.

Ответы [ 3 ]

4 голосов
/ 19 января 2010

вы захотите сделать что-то вроде [txtUserName.text isEqualToString:@""], потому что пустая строка не совпадает с нулевым объектом. Вы также можете удалить пробелы из строк перед проверкой, являются ли они пустыми, в зависимости от того, что делает ваше приложение. Я бы поставил удаление пробелов в методах делегирования редактирования UITextField, а не в этом методе.

EDIT:

if ([txtUserName.text isEqualToString:@""] || [txtUserName2.text isEqualToString:@""] || [txtUserName3.text isEqualToString:@""] || [txtUserName4.text isEqualToString:@""] || [txtUserName5.text isEqualToString:@""])
{
  //error message 
  lblUserTypedName.text =@"Error - No Field Input";
}
else
{
  lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk];
}
1 голос
/ 19 января 2010

Я бы предложил использовать метод длины NSString, чтобы определить, есть ли какие-либо входные данные. чтобы вы могли использовать

if ([txtUserName.text length]== 0 || [txtUserName2.text length]== 0 || [txtUserName3.text length]== 0 || [txtUserName4.text length]== 0 || [txtUserName5.text length]== 0)
{
    //error message 
    lblUserTypedName.text =@"Error - No Field Input";
}
else
{
lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk];
}

Это будет работать как для свойства text, равного nil (которое является значением по умолчанию в соответствии с документацией), так и для свойства text, являющегося пустой строкой.

Также обратите внимание, что это все еще выполняет вычисление, оно просто не отображает его. Если вы хотите запретить вычисления, вам нужно переместить код для вычисления ultimate_risk в блок else.

0 голосов
/ 19 января 2010

Если вы хотите проверить более одной строки, вы можете сделать это

if([txtUserName.text isEqualToString:@""] ||
 [txtUserName2.text isEqualToString:@""] ||
 [txtUserName3.text isEqualToString:@""] ||
 [txtUserName4.text isEqualToString:@""] ||
 [txtUserName5.text isEqualToString:@""] 
 )
{
 //error message 
  lblUserTypedName.text =@"Error - No Field Input";
}
else
{
lblUserTypedName.text = [[NSString alloc] initWithFormat: @"%2.1f%%", ultimate_risk];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...