#swift #optional
#swift #тип параметра
Вопрос:
В коде я не могу удалить необязательный из значения внутри lbltotalamount
. Значение в lblTotalAmount
не удаляет из него свое необязательное значение. Почему? Значение в grandtotal
необязательном удаляется, но когда я присваиваю его метке, оно снова возвращает необязательное значение. Получает lblTottalAmount
необязательное значение. Я хочу его удалить.
if success == false {
var grandtotal: Any? = value["total"]
if grandtotal != nil {
print("O!O!O!O/(grandtotal!)")
grandtotal = String(describing: grandtotal)
self.lblTotalAmount.text = ([grandtotal]) as! String // (here I am not able to remove optional)
}
Комментарии:
1. Какой тип
grandtotal
должен быть?2. общий итог должен быть string @v
3. Тогда почему вы создаете строку из строки и принудительно преобразуете строку в строку? Кстати, приведение
[String]
кString
все равно не работает. Разве это неgrandtotal
числовое значениеInt
илиDouble
?4. grandtotal может быть числовым или плавающим, но я хочу, чтобы он был строковым, код grandtotal = String(описание: grandtotal) Я просто пробовал другой подход, чтобы заставить мой код работать,,, Я хочу результат в строке self.lblTotalAmount.text = ([grandtotal]) как! Строка из этой строки, сэр
5. это также дает мне необязательный:——>if grandtotal != nil{ print(«O!O!O!O/(grandtotal!)») var g: String ? g = String(описание: grandtotal) //grandtotal = String(описание: grandtotal) self.lblTotalAmount.text = g как! Строка }
Ответ №1:
Проблема в строке
grandtotal = String(describing: grandtotal)
Вы проверяете nil
, но не разворачиваете значение, поэтому оно по-прежнему является необязательным.
И вы злоупотребляете String(describing
. Никогда не используйте его для типов, в которые можно преобразовать String
с init
помощью метода.
Всегда используйте условное понижение
if success == false {
if let grandtotal = value["total"] as? Double {
self.lblTotalAmount.text = String(grandtotal)
}
}