heys guys,Swift 2.2:可選綁定函數
我很新入編程,因此我遵循我當然在Udemy教我Swift 2.2。
爲了學習的目的,我一直在試圖編寫一個BMI計算器,其中我有一個textfield(只顯示數值)和一個滑塊,我可以用kg表示我的體重。拖動滑塊後,該值在文本字段中可見。我無法將一個值放入文本字段中,以便它顯示在滑塊上!
相同的文本框 - 滑塊關係與高度cm一起使用。現在,我創建了一個IBAction爲的把我kgSlider.value到我kgField.text,它看起來像這樣:
@IBAction func kgSet(sender: AnyObject) {
kgField.text! = String(Int(kgSlider.value))
}
那工作正常,但我解開(如老師在使用過程中)不知道,如果真的有一個值。好的,在這種情況下,我知道會有一個值,但我想要更加真實,因此我嘗試使用可選綁定來查找,如果有值而不是直接解包它。
因此,我在我的代碼中使用了cm.Field和cm.Slider,但它現在不起作用,我不知道爲什麼。代碼如下:
@IBAction func cmSet(sender: AnyObject) {
if let tempCm = String(Int(cmSlider.value)) as String! {
cmField.text = tempCm
}
}
所以我創建了一個叫做tempCM不斷,這將有來自cmSlider值,如果有一個值。因此,我將類似於其他IBAction的cmSlider.value轉換爲Int,然後轉換爲String。如果有值,它會將其攜帶到cmField.text中。這不起作用,因此我嘗試使用「as String!」聲明,但知道我總是得到0而不是正確的值。
那麼我在那裏做錯了什麼?
你爲什麼不用這個? @IBAction func kgSet(sender:AnyObject){ kgField.text = String(Int(kgSlider.value)) } 基本上,當需要展開某些東西時,您需要展開可選項。滑塊的值不是可選的(如果我們談論的是UISlider),所以沒有什麼可以解開的,如果在這種情況下使用語法,則不需要使用。 –
另外,在賦值的左邊打開強制解包(像這樣:kgField.text!= ...)沒有意義,不要這樣做。如果你不確定,得到編譯器的幫助,如果你忘記解開某些東西,它總是會抱怨。 –
@invisible_hand:感謝您的大力幫助!我從未想過在任務的提升方面使用解包。老師用這個!用於展開右側的文本字段(讓kgValue = Int(kgField.text!))。因此,我認爲它會再次解開它的意義,但如果你是對的,在分配的左側做它是沒有意義的! – Ari