夫特,线程1:EXC_BAD_INSTRUCTION错误

问题描述:

import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var currencySegment: UISegmentedControl! 

@IBOutlet weak var sourceMoneyField: UITextField! 

@IBOutlet weak var targetMoneyLabel: UILabel! 

    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. 
} 
@IBAction func convertMoney(_ sender: Any) { 
    let ratio : Double 
    switch currencySegment.selectedSegmentIndex { 
    case 0: 
     ratio = 0.00085 
    case 1: 
     ratio = 1178.5 
    default : 
     ratio = 1.0 
    } 
    let targetMoneyString: String 
    if let sourceMoney = Double(sourceMoneyField.text!){ 
     targetMoneyString = "\(sourceMoney * ratio)" 
    }else { 
     targetMoneyString = "Error" 
    } 

    targetMoneyLabel.text = targetMoneyString 
} 
} 

在最后部分时,收到错误是:夫特,线程1:EXC_BAD_INSTRUCTION错误

线程1:exc_bad_instruction(代码= exc_i386_invop,子码=为0x0)错误

targetMoneyLabel.text = targetMoneyString部分。

我想我必须改变最后一句话,我尝试阅读并观看许多视频来修复它,但我不能。

nil有关的问题?我是Swift新手。

+1

你复查你的网点连接是否正确? –

+0

在我的操场你的代码是正常工作,我没有得到错误 –

+0

如果targetMoneyLabel!= {零 targetMoneyLabel.text = targetMoneyString } 使用此代码,而不是最后一行,如果应用程序没有崩溃,则必须再次重新连接插座 –

问题必须解开变量。

你可以试试这个:

guard let targetMoneyString.characters.count > 0 else { 
    return 
} 
targetMoneyLabel.text = targetMoneyString 
+0

我做了,但它造成了另一个问题,即“条件中的变量绑定需要初始化器”。 –

+0

好消息是,无论如何,我修复了过去的错误。谢谢!你的建议太棒了^^,我会继续尝试 –