2015-02-18 3 views
0

как дела? Я новичок в iOS-разработчике, используя Swift, и столкнулся с проблемой. Мне нужно получить результат float из уравнения и установить его в мой label.text.EXC_BAD_INSTRUCTION при попытке показать Float в Label.text с помощью Swift

После ознакомления с документами (если есть ответ, извините, я еще не способен понять все, что там написано ... все еще учится) и поиск ответов на google, я наткнулся на это решение:

(где песо, Meta и Коэф являются поплавки и pesoInput и metaLabel являются Strings)

peso = (pesoInput.text as NSString).floatValue 
meta = peso * coef 
metaLabel.text = NSString(format: "%.2f", meta) 

Как вы можете видеть, я должен выполнить операции, которые будут определять «мета» и затем покажите его в металинии UILabel.

Я установил println заказы на печать трех поплавков, и все они верны, включая результат операции.

Однако, это дает мне эту ошибку в консоли:

fatal error: unexpectedly found nil while unwrapping an Optional value 

Эта ошибка редактора:

Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOC, subcode=0x0) 

И только так вы знаете, в области отладки, только ноль значение что существует, есть:

metaLabel = (UILabel!) = nil 

metaLabel в раскадровке Isnt пуст, он установлен на 0,01, так как я тестировал на посмотрите, был ли тот факт, что был 0,00, возникла нуль ...

Нужна помощь, ребята! Благодаря!

EDIT:

Вот весь код, ребята:

import UIKit 
import Foundation 

class ViewController: UIViewController{ 

//Vars Sexo, Peso e Coef 
var sexo = "" 
var peso : Float = 0.0 
var coef : Float = 0.039 
var meta : Float = 0.0 

//Alerta 
var tituloalertaPeso = "Peso Inválido" 
var mensagemalertaPeso = "Por favor, cheque o peso!" 


@IBAction func botaoMasc(sender: AnyObject) { 
    var sexo = "masculino" 
} 

@IBAction func botaoFem(sender: AnyObject) { 
    var sexo = "feminino" 
} 



@IBOutlet weak var pesoInput: UITextField! 


@IBOutlet weak var metaLabel: UILabel! 

@IBAction func okConfig(sender: AnyObject) { 

    metaLabel.text = "0.01" 

    //CONVERSAO STRING -> FLOAT 

    if (pesoInput.text as NSString).floatValue < 10 || (pesoInput.text as NSString).floatValue > 160 { 

     let alertaPeso = UIAlertController(title: "Peso Inválido", message: 
      "Por favor, precisamos do seu peso para fazer os cálculos!", preferredStyle: UIAlertControllerStyle.Alert) 
     alertaPeso.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default,handler: nil)) 

     self.presentViewController(alertaPeso, animated: true, completion: nil) 
    } 
    else { 

     peso = (pesoInput.text as NSString).floatValue 
    meta = peso * coef 


// THE FOLLOWING LINE IS THROWING THE EXC: 
    metaLabel.text = NSString(format: "%.2f", meta) 


    } 
} 



override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 
+0

С какой функцией (например, viewDidLoad() ...) называется ваша часть кода? –

+0

Это в IBAction, я выложу весь код! –

+1

Просьба указать строку, исключающую исключение –

ответ

0

Я считаю, что это что-то делать с линией peso = (pesoInput.text as NSString).floatValue. Если ваш текст пуст, я верю, что он возвращает nil. В этот момент вы пытаетесь получить floatValue от значения nil.

+0

Прошу прощения, я не опубликовал весь код. Глядя на эту часть кода, это имеет смысл! Однако значение peso происходит из ввода текстового поля (pesoInput), который заполняется до начала всей операции, поэтому я не думаю, что это проблема. –

0

Если metalabel является nil вы получите fatal error: unexpectedly found nil while unwrapping an Optional value, когда для доступа к свойству text (metalabel.text = "something").

Вы должны проверить подключение metalabel к xib.

Может быть, вы не подключили XIB к контроллеру вида: https://stackoverflow.com/a/6395750/3438932

Или, возможно, соединения разрываются: попробуйте отключить и снова подключить розетку.

+0

Спасибо! Но все равно ничего ... Я переделал выходное соединение, попробовал переименовать его ... Тем не менее, он по-прежнему сохраняется. –

Смежные вопросы