该应用程序基本上通过输入初始和最终速度和时间来计算加速度,然后使用公式来计算加速度 . 但是,由于文本框中的值是字符串,我无法将它们转换为整数 .
@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
27 回答
Swift 3
最简单,最安全的方法是:
避免将键盘类型设置为数字键盘的无效值:
在Swift 4中:
我已经制作了一个简单的程序,你有2个txt字段,你从用户那里获取输入并添加它们以使其更容易理解,请找到下面的代码 .
希望这可以帮助 .
关于int()和Swift 2.x:如果你在转换检查后得到一个nil值,如果你试图转换一个大数字的字符串(例如:1073741824),在这种情况下尝试:
Latest swift3 此代码只是将字符串转换为int
我最近遇到了同样的问题 . 以下解决方案对我有用:
在Swift 4中将字符串值转换为Integer
基本想法, note that this only works in Swift 1.x (查看ParaSara's answer以了解它在Swift 2.x中的工作原理):
Swift 4的更新
Update Answer for swift 2.0 :
toInt()
方法出错 . 因为,在Swift 2.x中,.toInt()
函数已从String中删除 . 在替换中,Int现在有一个接受String的初始化器:myString.toInt()
- 将字符串值转换为int .Swift 3.x
如果你有一个隐藏在字符串中的整数,你可以使用整数的构造函数进行转换,如下所示:
与其他数据类型(Float和Double)一样,您也可以使用NSString进行转换:
Xcode 8.3.2 • Swift 3.1
必需的扩展,结构和初始化器:
你想用
NSNumberFormatter().numberFromString(yourNumberString)
. 它很棒,因为它返回一个可选项,然后您可以使用"if let"进行测试,以确定转换是否成功 . 例如 .swift 4.0
除了强制绑定之外,您还可以使用Optional Binding .
例如:
//Xcode 8.1 and swift 3.0
我们也可以通过Optional Binding来处理它
Swift 3.0
试试这个,你不需要检查我做过的所有条件只是使用这个功能 . 发送任何字符串,数字,浮点数,双精度等 . 你得到一个数字作为值,如果它无法转换你的值,则为0
Function:
Usage: 在代码中添加上述函数并转换使用
let myNumber = getNumber(number: myString)
如果myString
有一个数字或字符串,则返回数字,否则返回0
Example 1:
输出:
printing number 9834
Example 2:
输出:
printing number 9834
Example 3:
输出:
printing number 9834
由于字符串可能包含非数字字符,因此应使用
guard
来保护操作 . 例:在 Swift 4.2 和Xcode 10中
用这个:
要么
从您的XIB或故事板中将您的UITextField KeyboardType设置为DecimalTab,并删除任何if条件以进行任何计算,即 .
因为键盘类型是DecimalPad,所以没有机会输入其他0-9或 .
希望这有帮助!!
这对我有用
对于Swift3.x
在Swift 2.x中,.toInt()函数已从String中删除 . 在替换中,Int现在有一个接受String的初始化器
INT(MyString的)
在您的情况下,您可以使用textField.text!.toInt()的Int(textField.text!)
Swift 1.x
Swift 2.x, 3.x
替代解决方案 . 您可以使用本机类型的扩展名 . 你可以在操场上试试 .
“2” . 新增(1)
我的解决方案是对字符串到int转换进行一般扩展 .
截至 swift 3 ,我必须强迫我的#%@!字符串&int与"!"否则它只是不起作用 .
例如:
问题:字符串“4.0000”无法使用Int(“4.000”)转换为整数?
答案:Int()检查字符串是否为整数,如果是,则给出整数,否则为nil . 但是Float或Double可以将任何数字字符串转换为相应的Float或Double而不给出nil . 例如,如果你有“45”整数字符串但使用Float(“45”)给你45.0浮点值或使用Double(“4567”)给你45.0 .
解决方案:NSString(字符串:“45.000”) . integerValue或Int(Float(“45.000”)!)!得到正确的结果 .