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

@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

当前回答

问题:字符串“4.000”不能转换成整数使用Int(“4.000”)?

答案:Int()检查字符串是否是整数,如果是,然后给你整数,否则为nil。但是Float或Double可以将任何数字字符串转换为各自的Float或Double而不给nil。例如,如果你有“45”整数字符串,但使用Float("45")会给你45.0浮点值,或使用Double("4567")会给你45.0。

解决方案:NSString(string: "45.000").integerValue或Int(Float("45.000")!)!才能得到正确的结果。

其他回答

因为字符串可能包含非数字字符,所以应该使用保护来保护操作。例子:

guard let labelInt:Int = Int(labelString) else {
    return
}

useLabelInt()

斯威夫特4.0

let stringNumber = "123"
let number = Int(stringNumber) //here number is of type "Int?"


//using Forced Unwrapping

if number != nil {         
 //string is converted to Int
}

你也可以使用可选绑定而不是强制绑定。

eg:

  if let number = Int(stringNumber) { 
   // number is of type Int 
  }

myString.toInt() -将字符串值转换为int。

快3.倍

如果你在字符串中隐藏了一个整数,你可以使用整数的构造函数进行转换,如下所示:

let myInt = Int(textField.text)

与其他数据类型(Float和Double)一样,你也可以使用NSString进行转换:

let myString = "556"
let myInt = (myString as NSString).integerValue

转换字符串值为整数在Swift 4

let strValue:String = "100"
let intValue = strValue as! Int
var intValueFromString:Int = strValue as! Int
or
var intValueFromString = Int(strValue)!

关于int()和Swift 2。X:如果你尝试转换一个大数字的字符串(例如:1073741824),在转换检查后得到nil值,在这种情况下尝试:

let bytesInternet : Int64 = Int64(bytesInternetString)!