2015-02-24 193 views
0

我按照教程做了一切正確的事。當我嘗試設置標籤文本時,我可以在控制檯中打印出年齡,我得到一個零錯誤。嘗試連接字符串時發生nill錯誤

class ViewController: UIViewController { 


    @IBOutlet var inputField: UITextField! 
    @IBOutlet var outputLbl: UILabel! 

    @IBAction func enterBtn(sender: AnyObject) { 

     if(inputField != nil){ 

      var age = inputField.text.toInt() 
      println(age) 

      var catYears = age! * 7 
      println(catYears) 
      outputLbl.text = "Your cat is \(catYears) old" 
     } 
     else {    
      outputLbl.text = "Please enter a age" 
     } 
    }  

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

我閱讀了文檔,並且正確地連接了字符串。不過就像我說的那樣,當我把下面的陳述拿出來:

outputLbl.text = "Your cat is \(catYears) old" 

程序運行正常。

+0

視圖加載後,文本字段永遠不會爲零,您可能需要測試以查看輸入字段中是否有任何內容。 'if inputField.text!=「」{}' – JMFR 2015-02-24 19:51:24

回答

0

不知道爲什麼這有差別,但我刪除了標籤和重建它和它的工作。

2

我建議重構此檢查輸入的文本是否可以轉換爲int。如果故事板加載正確,您不應該檢查textField != nil以後是否不爲零。

考慮這種變化:

@IBAction func enterBtn(sender: UIButton) { 

    if let age = inputField.text.toInt() { 
     println(age) 

     var catYears = age * 7 
     println(catYears) 
     outputLbl.text = "Your cat is \(catYears) old" 
    } else { 
     outputLbl.text = "Please enter a valid age" 
    } 
} 
+0

我試過你的代碼,並得到以下相同的錯誤:致命錯誤:意外地發現零,同時解開一個可選值 – jocdrew21 2015-02-24 20:05:37

+0

只是爲了澄清,它只發生在你按下輸入按鈕?它崩潰與EXE_BAD_ACCESS?哪一行是崩潰指向? – JMFR 2015-02-24 20:14:01

+0

可能是你的一個網點已經斷開連接? – JMFR 2015-02-24 20:14:33

相關問題