2014-10-01 48 views
2

我试图从两个UITextFields计算两个值。我所做的是使answerScreen等于valueOne,我把它变成了IntvalueTwo,这应该是与!变种相反。有人可以告诉我我做错了什么吗?Swift - 两个UITextFeild的值相乘

import UIKit 

class ViewController: UIViewController { 
    // The answer will be here 
    @IBOutlet weak var answerScreen: UILabel! 
    // The first number 
    @IBOutlet weak var valueOne: UITextField! 
    // The second number 
    @IBOutlet weak var valueTwo: UITextField! 
    // The equals button 
    @IBAction func calculateValues(sender: AnyObject) { 
     answerScreen.text = valueOne.text.toInt() * valueTwo! 
    } 

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

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
} 
+0

你是什么意思 “的变种相反” 是什么意思? – fluidsonic 2014-10-01 02:27:32

回答

4
let result = (valueOne.text.toInt() ?? 0) * (valueTwo.text.toInt() ?? 0) 
answerScreen.text = "\(result)" 

将文本字段值转换为Int或使用0如果转换失败。

+0

感谢您的回复。你能向我解释为什么你把它变成一个常量,什么是“??”手段? – 2014-10-01 02:42:06

+0

我将它分配给一个常量,使代码更具可读性(比如果我将计算放入字符串插值)。 '??'是[nil coalescing操作符](https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/BasicOperators.html#//apple_ref/doc/uid/TP40014097-CH6- XID_124)。 '一个??如果不是'nil'或'b',则b'使用'a'。如果'.toInt()'返回'nil',因为用户没有输入有效的数字,这是一个回退。 – fluidsonic 2014-10-01 02:45:13

-1

一个可以尝试

var temp = (firstTextField.text! as NSString).integerValue * (secondTextField.text! as NSString).integerValue 

有关设定值的UILabel

self.resultLable.text = String("\((firstTextField.text! as NSString).integerValue * (secondTextField.text! as NSString).integerValue)")