2017-10-07 5 views
0

Je crée un outil de conversion multiple dans iOS pour constituer mon portefeuille. Cependant, l'onglet distance ne chargera pas la vue. Il se bloque instantanément et me donne deux erreurs.Swift ViewController se bloque lors de la charge

La seconde apparaît lorsque j'essaie de continuer. Ci-dessous sont les erreurs et ma classe Swift liée au contrôleur ainsi que ce que l'application ressemble.

errors

import UIKit 

class DistanceViewController: UIViewController, UITextFieldDelegate{ 
    @IBOutlet var userDistance: UITextField! 
    @IBOutlet var resultLabel: UILabel! 

    var fromKilometerValue: Measurement<UnitLength>?{ 
     didSet{ 
      milesConversion() 
     } 
    } 

    var fromMileValue: Measurement<UnitLength>?{ 
     didSet{ 
      kilometerConversion() 
     } 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     milesConversion() 
     kilometerConversion() 
    } 

    //Dont forget to drag a gesture recognizer 
    @IBAction func dismissKeyboard(_sender: UITapGestureRecognizer){ 
     userDistance.resignFirstResponder() 
    } 

    let numberFormatter: NumberFormatter = { 
     let nf = NumberFormatter() 
     nf.numberStyle = .decimal 
     nf.minimumFractionDigits = 1 
     nf.maximumFractionDigits = 1 
     return nf 
    }() 

    func textField(_ userDistance: UITextField, 
        shouldChangeCharactersIn range: NSRange, 
        replacementString string: String) -> Bool { 
     let existingTextHasDecimalSeparator = userDistance.text?.range(of: ".") 
     let replacementTextHasDecimalSeparator = string.range(of: ".") 

     if existingTextHasDecimalSeparator != nil, 
      replacementTextHasDecimalSeparator != nil { 
      return false 
     } else { 
      return true 
     } 
    } 

    var toMileValue: Measurement<UnitLength>?{ 
     if let fromKilometerValue = fromKilometerValue{ 
      return fromKilometerValue.converted(to: .miles) 
     } 
     else{ 
      return nil 
     } 
    } 

    var toKilometerValue: Measurement<UnitLength>?{ 
     if let fromMileValue = fromMileValue{ 
      return fromMileValue.converted(to: .kilometers) 
     } 
     else{ 
      return nil 
     } 
    } 

    func milesConversion(){ 
     if let toMileValue = toMileValue { 
      resultLabel.text = numberFormatter.string(from: NSNumber(value: Double(userDistance.text!)!))! + " km" + " is " + numberFormatter.string(from: NSNumber(value: toMileValue.value))! + " miles" 
     } 
    } 

    func kilometerConversion(){ 
     if let toKilometerValue = toKilometerValue{ 
      resultLabel.text = numberFormatter.string(from: NSNumber(value: Double(userDistance.text!)!))! + " miles" + " is " + numberFormatter.string(from: NSNumber(value: toKilometerValue.value))! + " km" 
     } 
    } 

    @IBAction func convertKilometers(_ sender: Any) { 
     if let input = userDistance.text, let value = Double(input) { 
      fromKilometerValue = Measurement(value: value, unit: .kilometers) 
     } else { 
      fromKilometerValue = nil 
     } 

     if(toMileValue == nil){ 
      resultLabel.text = "Unable to Convert " + userDistance.text! 
     } 
    } 

    @IBAction func convertMiles(_ sender: Any) { 
     if let input = userDistance.text, let value = Double(input) { 
      fromMileValue = Measurement(value: value, unit: .miles) 
     } else { 
      fromMileValue = nil 
     } 

     if(toKilometerValue == nil){ 
      resultLabel.text = "Unable to Convert " + userDistance.text! 
     } 
    } 
} 

La classe et la vue sont mises en correspondance correctement ce que je vois. Quelqu'un a une idée?

EDIT: j'avais d'anciennes connexions qui n'existaient pas dans Main.storyboard, je les ai enlevées et la vue se charge très bien!

+0

Vérifiez toutes vos connexions de sortie. Et lisez https://stackoverflow.com/questions/32170456/what-does-fatal-error-unexpectedly-found-nil-while-unwrapping-an-optional-valu – rmaddy

+0

@rmaddy qui a fonctionné! Merci! –

Répondre

0

Vérifiez toutes vos connexions de sortie. Et lisez stackoverflow.com/questions/32170456/... - rmaddy

+0

Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article. - [De l'avis] (/ review/low-quality-posts/17554663) – Dmitry