Добавление значения двух UILabels

#swift

#swift

Вопрос:

Я создаю приложение, в котором я хочу добавить значение двух UILabels и показать результат в третьей UILabel. Я пытался это сделать Int(totalOwed.text) = Int(numOfBoxesDelivered.text) - Int(numOfBoxesReturned.text) , но XCode выдает ошибку, сообщающую мне, что «Тип выражения неоднозначен без дополнительного контекста». Как я мог это исправить?

Комментарии:

1. Int(totalOwed.text) = , это совершенно неправильно. Подумайте об этом, какой тип является результатом вычитания и какой тип ожидает метка?

2. Разве результат вычитания не является Int ? Мое рассуждение заключается в том, что я конвертирую оба текста для numOfBoxesDelivered и numOfBoxesReturned в целые числа, поэтому текст для totalOwed также должен быть преобразован в Int . Верно?

3. Ну да, но вы не можете преобразовать свойство из string в int и присвоить ему значение. По сути, вы пишете что-то вроде 0 = 5 — 3. Разделите его на два оператора: один для выполнения вычитания, а другой для присвоения результата вычитания метке.

4. Думаю, я понимаю, что вы имеете в виду. Однако, если я попытаюсь сделать что-то вроде let result = Int(numOfBoxesDelivered.text) - Int(numOfBoxesReturned.text) and then totalOwed.text = "(result)"' , Xcode по-прежнему сообщает мне, что тип выражения неоднозначен без дополнительного контекста.

Ответ №1:

Текстовые значения не являются обязательными попробуйте развернуть их, также label.text принимает строковое значение, которое вам не нужно преобразовывать! просто используйте это, если вы уверены, что у них есть значения

 totalOwed.text = (Int(numOfBoxesDelivered.text!) - Int(numOfBoxesReturned.text!)).description
 

если нет ! , замените правильными методами разворачивания, я рекомендую прочитать «необязательно» в документации swift

Комментарии:

1. не преобразовывайте ‘totalOwed.text =’ в целое число посмотрите на мой код еще раз удалите целочисленное преобразование из того, что вы используете установщик, и оно принимает строку, а не целое число скопируйте мой код и повторите попытку