Задача C - Несоответствия длины строки и числа - PullRequest
0 голосов
/ 05 августа 2010

Я пытаюсь получить число из записи в текстовом поле, преобразовать его в строку и взять его длину.(IE: выполнить LEN (someInteger) для числа).

Мне удалось заставить его работать, однако есть некоторые несоответствия, когда число равно 0 или нулю.

Например;

-(IBAction)update
{
   // inputField is the number pad textbox
   double myInput = [inputField.text doubleValue];

   // 
   NSNumber *c = [NSNumber numberWithDouble:myInput];
   NSString *myOutput  = [c stringValue];

   NSLog(@"Starting number (number) = %@", c);
   NSLog(@"myOutput (string) = %@", myOutput);
   NSLog(@"myOutput (length) = %d", ([myOutput length]) );

}

Преобразование числа в строку работает нормально.У меня проблема с длиной, особенно когда нет числовой (или нулевой) записи.

У меня есть запись в текстовом поле цифровой клавиатуры на XIB, у которой «текст» равен 0 (заполнитель простоговорит «Введите число здесь»)

Когда вы впервые начинаете вводить текстовое поле, «текст» исчезает, и вы начинаете с пустого текстового поля.

Проблема 1 - когда вы впервыевведите текстовое поле, в текстовом поле ничего нет, но мой NSLog говорит, что длина вывода равна 1 символу.

Это вызывает проблему, поскольку визуально в текстовом поле ничего нет, но [myOutput length] сообщает 1 символдлина.

Проблема 2 - когда вы начинаете вводить цифры, все идет хорошо - но когда вы начинаете удалять цифры до точки, где вы полностью очищаете текстовое поле, он сообщает длину 1 символ.

Как прочитать 1 символ, если в текстовом поле ничего нет?Я думаю, что это снова должен быть "текст" (из инспектора идентификации).

Сводка.

  1. Есть поле ввода в текстовом поле цифровой клавиатуры.Всякий раз, когда вы обновляете запись, она вызывает метод обновления IBaction.

  2. Когда вы впервые вводите числа в текстовое поле, в поле ввода ничего не отображается, но NSLog сообщает длинуимеет длину 1 символ.

  3. Когда вы начинаете вводить числа, а затем начинаете удалять их по одному, пока полностью не удалите все числа, длина сообщения будет равна 1 символу.

В обоих случаях NSLog должен сообщать 0 длины, но это никогда не происходит.Я попытался сделать [myOutput length] - 1, но это дает мне странные результаты.

Любая помощь по этому вопросу будет отличной

Спасибо.

1 Ответ

3 голосов
/ 05 августа 2010

Если текста нет, myInput будет равно 0.0.myOutput будет тогда равен @"0", который имеет длину 1.

Почему бы просто не использовать [inputField.text length]?

Вы можете сделать что-то вроде этого:

NSNumber *number = nil;
if ([inputField.text length] > 0) {
    number = [NSNumber numberWithDouble:[inputField.text doubleValue]];
}

Таким образом, у вас будет свой номер, если он существует, иначе number будет nil.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...