Добавить целые числа из 5 UITextFields в UILabel в Какао Touch - PullRequest
0 голосов
/ 14 февраля 2010

Я пытаюсь сложить целые числа из пяти UITextFields и отправить их в UILabel.

Это код, который я пробовал, но он не работает должным образом. Число, которое отображается в метке, равно , а не сумма моих текстовых полей. Я также попытался опубликовать текстовое поле вместо метки с тем же результатом. Нет ошибок или предупреждений при сборке.

int val = [textfield1.text intValue]
val = val+[textfield2.text intValue];
val = val+[textfield3.text intValue];
val = val+[textfield4.text intValue];
val = val+[textfield5.text intValue];

NSString *labelStr = [[NSString alloc] initWithFormat:@"%i", val];

label.text = labelStr;

Что-то не так с кодом? Альтернативный код? Благодарен за все ответы!

1 Ответ

0 голосов
/ 14 февраля 2010

Код выглядит более или менее правильным для меня, кроме утечки памяти. Вы должны просмотреть правила управления памятью и исправить вашу утечку.

Я предполагаю, что введенные вами цифры складываются в число, которое находится за пределами диапазона int. Ввод, скажем, 1000000000 (10 ** 9) в каждое из пяти полей будет одним из способов осуществить это на любой машине, где int составляет 32 бита (включая, в настоящее время, устройства iPhone-OS). 1007 *

В зависимости от цели вашего приложения вы можете просто ограничить пять полей ввода; если максимальное значение, которое имеет смысл, составляет менее одной пятой (для пяти полей, и при этом предполагается, что все они имеют одинаковый предел) максимального значения int, переполнение невозможно.

Если крышка не решит проблему полностью, попробуйте другой тип. Если значения никогда не должны быть отрицательными, используйте тип без знака. В противном случае попробуйте long long, либо любой из типов с плавающей точкой, либо используйте объекты NSDecimalNumber.

Конечно, я могу быть совершенно неправ, так как вы не сказали, какие цифры вы ввели или каков был результат. Если он был нулевым, убедитесь, что вы подключили свои выходы в IB; если вы забыли сделать это, они содержат nil, который при запросе text вернет nil, который при запросе intValue вернет 0 и 0 + 0 + 0 + 0 + 0 = 0.

...