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

@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

当前回答

Swift 5.0及以上

工作

如果你拆分字符串,它会创建两个子字符串,而不是两个字符串。下面的方法将检查任何并将其转换为0 NSNumber很容易将NSNumber转换为Int,浮动任何你需要的数据类型。

实际的代码

//Convert Any To Number Object Removing Optional Key Word.
public func getNumber(number: Any) -> NSNumber{
 guard let statusNumber:NSNumber = number as? NSNumber  else {
    guard let statString:String = number as? String else {
        guard let statSubStr : Substring = number as? Substring else {
            return 0
        }
        if let myInteger = Int(statSubStr) {
            return NSNumber(value:myInteger)
        }
        else{
            return 0
        }
    }

    if let myInteger = Int(statString) {
        return NSNumber(value:myInteger)
    }
    else if let myFloat = Float(statString) {
        return NSNumber(value:myFloat)
    }else {
        return 0
    }
}
return statusNumber }

使用

if let hourVal = getNumber(number: hourStr) as? Int {

}

传递字符串进行检查并转换为Double

Double(getNumber(number:  dict["OUT"] ?? 0)

其他回答

Swift5 float或int string to int:

extension String {
    func convertStringToInt() -> Int {
        return Int(Double(self) ?? 0.0)
    }
}

let doubleStr = "4.2"
// print 4
print(doubleStr.convertStringToInt())

let intStr = "4"
// print 4
print(intStr.convertStringToInt())

Swift 5.0及以上

工作

如果你拆分字符串,它会创建两个子字符串,而不是两个字符串。下面的方法将检查任何并将其转换为0 NSNumber很容易将NSNumber转换为Int,浮动任何你需要的数据类型。

实际的代码

//Convert Any To Number Object Removing Optional Key Word.
public func getNumber(number: Any) -> NSNumber{
 guard let statusNumber:NSNumber = number as? NSNumber  else {
    guard let statString:String = number as? String else {
        guard let statSubStr : Substring = number as? Substring else {
            return 0
        }
        if let myInteger = Int(statSubStr) {
            return NSNumber(value:myInteger)
        }
        else{
            return 0
        }
    }

    if let myInteger = Int(statString) {
        return NSNumber(value:myInteger)
    }
    else if let myFloat = Float(statString) {
        return NSNumber(value:myFloat)
    }else {
        return 0
    }
}
return statusNumber }

使用

if let hourVal = getNumber(number: hourStr) as? Int {

}

传递字符串进行检查并转换为Double

Double(getNumber(number:  dict["OUT"] ?? 0)

至于swift 3,我必须强制我的#%@!字符串和int加上一个“!”否则它就不起作用。

例如:

let prefs = UserDefaults.standard
var counter: String!
counter = prefs.string(forKey:"counter")
print("counter: \(counter!)")


var counterInt = Int(counter!)
counterInt = counterInt! + 1
print("counterInt: \(counterInt!)")

OUTPUT:
counter: 1
counterInt: 2

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

快3.倍

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

let myInt = Int(textField.text)

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

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

有用的字符串到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