2017-02-15 3 views
1

Итак, вот моя проблема.Когда строка установлена ​​в Double, она равна нулю

Im пытается преобразовать label.text к удвоенному значению (метка содержит только цифры.) Поскольку значение не всегда устанавливается мы объявим его в качестве дополнительного значения и поэтому я использую метод:

if let 

Мой код:

if let firstvalue = Double(label1.text!){ 
label2.text = "\(firstvalue)" 

} 

Однако label2.text либо возвращает NIL или не показывает ничего вообще. Значение метки1 вычисляется в другом ViewController (ViewController2). Но оно все еще имеет значение, которое появляется и равно label1.text.

Я благодарен за любую помощь, потому что я действительно застрял. Спасибо заранее!

+2

Вы уверены, что Label1.Text возвращает номер и Безразлично У меня была одна и та же проблема: у меня была такая же проблема: я получал «2,5» вместо «2,5» (обратите внимание на пространство до 2). –

+0

Я понял, что у меня было, как вы сказали, случайно нажали пробел до значений Хаха не может поверить, что я застрял с этим в течение четырех дней, и это было проблемой. Спасибо, что никогда бы не подумали об этом! –

+0

Im рад помочь! Я просто напишу это как ответ , отметьте его так что все могут понять это быстрее. –

ответ

2

Попробуйте

let lblval = label1.text 
if let firstvalue = lblval { 
label2.text = "\(firstvalue)" or label2.text = firstvalue 
} 

Вы пытаетесь добавить две строки, т.е. lbl1.text = и lbl2.text = результат "55" "5" = lbl1.test + lbl2.text. Наконец, вы получаете результат как «555». Вместо добавления строки, сначала вы можете напечатанный материал его в Double, плавать так это даст желаемому результату

Пример:

 let lblval1 = Double(label1.text) or Int(label1.text) 
    let lblval2 = Double(label2.text) or Int(label1.text) 

     if let firstvalue = lblval1, let secondvalue = lblval2 { 

      let result = firstvalue + second value 
      print("Addition : \(result)") 

     } 

Надеется, что это помогает.

+0

Да, это работает, дело в том, что, поскольку у меня есть несколько ярлыков, которые я хочу добавить, мне нужен Double, float или Int. Когда я добавляю первое значение, давая слово secondvalue label2.text показывает оба из них, но не сумму сложения. Есть ли у вас какие-либо идеи о том, как это решить? Спасибо за ваш ответ, это действительно помогло !!! –

+0

Проверьте измененный ответ. Он добавит две метки. –

+0

Так вот, я пробовал все ваши ответы. Все они работают, так как они не возвращают нуль и приложение не падает. Однако при нажатии кнопки ничего не происходит, это похоже на: если оператор let не проходит, как и первое значение не равно = Double (label1.text!). Еще раз спасибо за вашу помощь, я очень благодарен! –

-1

Вы можете развернуть свое входящее двойное значение с помощью спецификатора формата. Убедитесь, что введенное значение имеет тип Double.

if let firstvalue = Double(label1.text!){ 
label2.text = String(format:"%f", firstvalue) 
} 
0

Чтобы исправить это, сначала убедитесь, что ваш steing Безразлично "т иметь любое пространство или письмо Это не то же самое:.!

let num1 = String(" 2.5") //will crash 
let num2 = String("2.5") //will work 
Смежные вопросы