2017-10-07 54 views
0

我正在iOS中制作一个多转换工具来构建我的投资组合。但是,距离选项卡不会加载视图。它立即崩溃,并给我两个错误。Swift ViewController在加载时崩溃

第二个出现,当我尝试继续。下面是错误和我的Swift类绑定到控制器以及应用程序的样子。

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! 
     } 
    } 
} 

类和视图是从我所看到的正确映射。任何人有任何想法?

编辑:我有旧的连接,不存在Main.storyboard,我删除他们和视图加载得很好!

+0

检查所有的插座连接。并阅读https://stackoverflow.com/questions/32170456/what-does-fatal-error-unexpectedly-found-nil-while-unwrapping-an-optional-valu – rmaddy

+0

@rmaddy工作!谢谢! –

回答

0

检查所有的插座连接。并阅读stackoverflow.com/questions/32170456/... - rmaddy

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/17554663) – Dmitry