2016-12-01 38 views
1
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 } 使用此代碼,而不是最後一行,如果應用程序沒有崩潰,則必須再次重新連接插座 –

回答

0

問題必須解開變量。

你可以試試這個:

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

我做了,但它造成了另一個問題,即「條件中的變量綁定需要初始化器」。 –

+0

好消息是,無論如何,我修復了過去的錯誤。謝謝!你的建議太棒了^^,我會繼續嘗試 –

相關問題