该应用程序基本上通过输入初始和最终速度和时间来计算加速度,然后使用一个公式来计算加速度。但是,由于文本框中的值是字符串,我无法将它们转换为整数。

@IBOutlet var txtBox1 : UITextField
@IBOutlet var txtBox2 : UITextField
@IBOutlet var txtBox3 : UITextField
@IBOutlet var lblAnswer : UILabel


@IBAction func btn1(sender : AnyObject) {

    let answer1 = "The acceleration is"
    var answer2 = txtBox1
    var answer3 = txtBox2
    var answer4 = txtBox3

当前回答

用这个:

// get the values from text boxes
    let a:Double = firstText.text.bridgeToObjectiveC().doubleValue
    let b:Double = secondText.text.bridgeToObjectiveC().doubleValue

//  we checking against 0.0, because above function return 0.0 if it gets failed to convert
    if (a != 0.0) && (b != 0.0) {
        var ans = a + b
        answerLabel.text = "Answer is \(ans)"
    } else {
        answerLabel.text = "Input values are not numberic"
    }

OR

使你的UITextField KeyboardType为DecimalTab从你的XIB或故事板,并删除任何if条件做任何计算,即。

var ans = a + b
answerLabel.text = "Answer is \(ans)"

因为键盘类型是DecimalPad,没有机会输入其他0-9或。

希望这对你有帮助!!

其他回答

对于Swift3.x

extension String {
    func toInt(defaultValue: Int) -> Int {
        if let n = Int(self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)) {
            return n
        } else {
            return defaultValue
        }
    }
}

Swift中的Int包含一个接受String的初始化式。它返回一个可选的Int?因为如果字符串不包含数字,转换可能会失败。

通过使用if let语句,可以验证转换是否成功。

所以你的代码会变成这样:

@IBOutlet var txtBox1 : UITextField
@IBOutlet var txtBox2 : UITextField
@IBOutlet var txtBox3 : UITextField
@IBOutlet var lblAnswer : UILabel

@IBAction func btn1(sender : AnyObject) {

    let answer1 = "The acceleration is"
    var answer2 = txtBox1
    var answer3 = txtBox2
    var answer4 = txtBox3

    if let intAnswer = Int(txtBox1.text) {
      // Correctly converted
    }
}

为替代方案。您可以对本机类型使用扩展。你可以在操场上测试。

extension String {
    func add(a: Int) -> Int? {
        if let b = Int(self) {
            return b + a
        }
        else {
            return nil
        }
    }     
}

“2”阀门(1)

斯威夫特,斯威夫特

有不同的情况下,从一个数据类型转换到另一个数据类型,这取决于输入。

如果输入数据类型是Any,我们必须像以前一样使用convert到实际的数据类型,然后转换为我们想要的数据类型。例如:

func justGetDummyString() -> Any {
  return "2000"
}
let dummyString: String = (justGetDummyString() as? String) ?? "" // output = "2000"
let dummyInt: Int = Int(dummyString) ?? 0 // output = 2000

//Xcode 8.1和swift 3.0

我们也可以通过可选绑定来处理它

let occur = "10"

if let occ = Int(occur) {
        print("By optional binding :", occ*2) // 20

    }