2017-10-07 7 views
0

私はポートフォリオを構築するためにiOSでマルチ変換ツールを作成しています。ただし、距離タブはビューをロードしません。即座にクラッシュし、2つのエラーが表示されます。Swift ViewControllerがロード時にクラッシュする

続行しようとすると2番目のメッセージが表示されます。以下はエラーと、私の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! 
     } 
    } 
} 

クラスとビュー私が見たものから適切にマッピングされます。誰もが考えている?

EDIT:私は古い接続をMain.storyboardには存在しませんでした。私はそれらを削除して、ビューは正常に読み込まれます。

+0

コンセントの接続をすべてチェックしてください。 https://stackoverflow.com/questions/32170456/what-does-fatal-error-unexpectedly-found-nil-while-unwrapping-an-optional-valu – rmaddy

+0

@rmaddyが動作しました!ありがとう! –

答えて

0

コンセントの接続をすべて確認してください。そして、readoveroverflow.com/questions/32170456/...- rmaddy

+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューから](/レビュー/低品質の投稿/ 17554663) – Dmitry