Mar*_*sem 341 int uitextfield ios swift
该应用程序基本上通过输入初始和最终速度和时间来计算加速度,然后使用公式来计算加速度.但是,由于文本框中的值是字符串,我无法将它们转换为整数.
@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
Run Code Online (Sandbox Code Playgroud)
Par*_*mal 335
更新swift 2.0的答案:
toInt()方法给出了错误.因为,在Swift 2.x中,该.toInt()函数已从String中删除.在替换中,Int现在有一个接受String的初始化器:
let a:Int? = Int(firstText.text) // firstText is UITextField
let b:Int? = Int(secondText.text) // secondText is UITextField
Run Code Online (Sandbox Code Playgroud)
Nar*_*ini 315
基本的想法,请注意,这仅适用于Swift 1.x(查看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"
}
Run Code Online (Sandbox Code Playgroud)
Swift 4的更新
...
let a:Int? = Int(firstText.text) // firstText is UITextField
let b:Int? = Int(secondText.text) // secondText is UITextField
...
Run Code Online (Sandbox Code Playgroud)
Kum*_* KL 83
myString.toInt() - 将字符串值转换为int.
Swift 3.x
如果你有一个隐藏在字符串中的整数,你可以使用整数的构造函数进行转换,如下所示:
let myInt = Int(textField.text)
Run Code Online (Sandbox Code Playgroud)
与其他数据类型(Float和Double)一样,您也可以使用NSString进行转换:
let myString = "556"
let myInt = (myString as NSString).integerValue
Run Code Online (Sandbox Code Playgroud)
Leo*_*bus 31
Xcode 8.3.2•Swift 3.1
class IntegerField: UITextField {
var integer: Int {
return string.digits.integer
}
override func willMove(toSuperview newSuperview: UIView?) {
addTarget(self, action: #selector(editingChanged), for: .editingChanged)
keyboardType = .numberPad
textAlignment = .right
editingChanged()
}
func editingChanged() {
text = Formatter.decimal.string(for: integer)
print(integer)
}
}
Run Code Online (Sandbox Code Playgroud)
必需的扩展,结构和初始化器:
extension Sequence where Iterator.Element == UnicodeScalar {
var string: String { return String(String.UnicodeScalarView(self)) }
}
extension Formatter {
static let decimal = NumberFormatter(numberStyle: .decimal)
}
extension UITextField {
var string: String { return text ?? "" }
}
extension String {
private static var digitsPattern = UnicodeScalar("0")..."9"
var digits: String {
return unicodeScalars.filter { String.digitsPattern ~= $0 }.string
}
var integer: Int { return Int(self) ?? 0 }
}
extension NumberFormatter {
convenience init(numberStyle: Style) {
self.init()
self.numberStyle = numberStyle
}
}
Run Code Online (Sandbox Code Playgroud)
小智 23
你想用NSNumberFormatter().numberFromString(yourNumberString).它很棒,因为它返回一个可选项,然后您可以使用"if let"进行测试,以确定转换是否成功.例如.
var myString = "\(10)"
if let myNumber = NSNumberFormatter().numberFromString(myString) {
var myInt = myNumber.integerValue
// do what you need to do with myInt
} else {
// what ever error code you need to write
}
Run Code Online (Sandbox Code Playgroud)
小智 21
swift 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
}
Run Code Online (Sandbox Code Playgroud)
除了强制绑定之外,您还可以使用Optional Binding.
例如:
if let number = Int(stringNumber) {
// number is of type Int
}
Run Code Online (Sandbox Code Playgroud)
小智 14
// Xcode 8.1和swift 3.0
我们也可以通过Optional Binding来处理它
let occur = "10"
if let occ = Int(occur) {
print("By optional binding :", occ*2) // 20
}
Run Code Online (Sandbox Code Playgroud)
iOS*_*iOS 10
在Swift 4.2和Xcode 10.1中
let string:String = "789"
let intValue:Int = Int(string)!
print(intValue)
let integerValue:Int = 789
let stringValue:String = String(integerValue)
//OR
//let stringValue:String = "\(integerValue)"
print(stringValue)
Run Code Online (Sandbox Code Playgroud)
小智 7
斯威夫特3
最简单,最安全的方法是:
@IBOutlet var textFieldA : UITextField
@IBOutlet var textFieldB : UITextField
@IBOutlet var answerLabel : UILabel
@IBAction func calculate(sender : AnyObject) {
if let intValueA = Int(textFieldA),
let intValueB = Int(textFieldB) {
let result = intValueA + intValueB
answerLabel.text = "The acceleration is \(result)"
}
else {
answerLabel.text = "The value \(intValueA) and/or \(intValueB) are not a valid integer value"
}
}
Run Code Online (Sandbox Code Playgroud)
避免将键盘类型设置为数字键盘的无效值:
textFieldA.keyboardType = .numberPad
textFieldB.keyboardType = .numberPad
Run Code Online (Sandbox Code Playgroud)
小智 7
对于 String 到 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
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
"123".toInt() // 123
Run Code Online (Sandbox Code Playgroud)
在Swift 4中:
extension String {
var numberValue:NSNumber? {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
return formatter.number(from: self)
}
}
let someFloat = "12".numberValue
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
460328 次 |
| 最近记录: |