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

@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")!)!才能得到正确的结果。

其他回答

有用的字符串到Int和其他类型

extension String {
        //Converts String to Int
        public func toInt() -> Int? {
            if let num = NumberFormatter().number(from: self) {
                return num.intValue
            } else {
                return nil
            }
        }

        //Converts String to Double
        public func toDouble() -> Double? {
            if let num = NumberFormatter().number(from: self) {
                return num.doubleValue
            } else {
                return nil
            }
        }

        /// EZSE: Converts String to Float
        public func toFloat() -> Float? {
            if let num = NumberFormatter().number(from: self) {
                return num.floatValue
            } else {
                return nil
            }
        }

        //Converts String to Bool
        public func toBool() -> Bool? {
            return (self as NSString).boolValue
        }
    }

像这样使用它:

"123".toInt() // 123

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)!

斯威夫特3.0

试试这个,你不需要检查任何条件,我已经做了一切,只是使用这个函数。发送任何字符串,数字,浮点数,双精度等。您将得到一个数字作为值,如果它无法转换您的值则为0

功能:

func getNumber(number: Any?) -> NSNumber {
    guard let statusNumber:NSNumber = number as? NSNumber else
    {
        guard let statString:String = number as? String else
        {
            return 0
        }
        if let myInteger = Int(statString)
        {
            return NSNumber(value:myInteger)
        }
        else{
            return 0
        }
    }
    return statusNumber
}

用法: 在代码中添加上述函数并转换使用 让myNumber = getNumber(number: myString) 如果myString包含数字或字符串,则返回数字,否则返回0

示例1:

let number:String = "9834"
print("printing number \(getNumber(number: number))")

输出:打印号9834

示例2:

let number:Double = 9834
print("printing number \(getNumber(number: number))")

输出:打印号9834

示例3:

let number = 9834
print("printing number \(getNumber(number: number))")

输出:打印号9834

基本想法,注意这只适用于Swift 1。(查看ParaSara的回答,看看它是如何在Swift 2.x中工作的):

    // toInt returns optional that's why we used a:Int?
    let a:Int? = firstText.text.toInt() // firstText is UITextField
    let b:Int? = secondText.text.toInt() // secondText is UITextField

    // check a and b before unwrapping using !
    if a && b {
        var ans = a! + b!
        answerLabel.text = "Answer is \(ans)" // answerLabel ie UILabel
    } else {
        answerLabel.text = "Input values are not numeric"
    }

Swift 4更新

...
let a:Int? = Int(firstText.text) // firstText is UITextField
let b:Int? = Int(secondText.text) // secondText is UITextField
...