2016-01-13 50 views
0

Screenshot of simulator screen當任何字段留空時,UITextfield值的總和崩潰

大家好。我剛剛開始嘗試在Swift 2中學習編碼。我正在嘗試製作一個非常簡單的應用程序,我可以在其中添加分數,按下「計算」按鈕並在標籤中顯示總計。正如截圖所示,我能夠做到這一點。我遇到的問題是,如果我不在某個文本框中添加分數,仍然嘗試計算它,則會崩潰。這是我的代碼:

class ViewController: UIViewController { 


@IBOutlet weak var score1: UITextField! 

@IBOutlet weak var score2: UITextField! 

@IBOutlet weak var score3: UITextField! 

@IBOutlet weak var total: UILabel! 

@IBAction func Calculate(sender: AnyObject) { 

    let score1 = Int(score1.text!)! 
    let score2 = Int(score2.text!)! 
    let score3 = Int(score3.text!)! 
    let alltogether = (scoreone) + (scoretwo) + (scorethree) 

    total.text = "Your total score is \(alltogether)!" 

} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

} 

有人能指點我需要看的方向。我想如果該字段爲零,我需要添加某種豁免。或者沿着使默認的int 0的東西?謝謝你們!

+0

你強制展開一個可選變量。如果任何字段(例如文本字段「score1」)爲空,則下面一行代碼「let score1 = Int(score1.text!)!」將失敗,因爲發送時「Int」初始化程序將返回「nil」一個空的字符串。在這裏有幾個線程解釋瞭如何安全地打開可選項,以及如何將'String'值轉換爲'Int',參見例如。 [LeoDabus在此主題中的答案](http://stackoverflow.com/a/34294660/4573247)。 – dfri

+0

可能重複[Swift - 將字符串轉換爲Int](http://stackoverflow.com/questions/24115141/swift-converting-string-to-int) – dfri

回答

2
let score1 : Int = Int(score1.text ?? "") ?? 0 
let score2 : Int = Int(score2.text ?? "") ?? 0 
let score3 : Int = Int(score3.text ?? "") ?? 0 

這將產生的情況下,價值0你的字段爲空或其他非數字(或如果UITextField財產.text包含nil)。

+0

非常感謝!工作完美。這個答案幫助我弄清楚瞭如何在Double中工作。 – CincyWong

+0

@ChrisWong樂意幫忙!看看鏈接的線程http://stackoverflow.com/questions/24115141/swift-converting-string-to-int以及在這方面有很多有價值的信息。 – dfri