SWIFT: var someVariable:int = textfield.text.toInt() x textfield2.text.toInt() 并强制展开
SWIFT: var someVariable:int = textfield.text.toInt() x textfield2.text.toInt() and force unwrap
首先post这里请温柔点。我对编码相当陌生,正在努力了解 SWIFT 及其可选内容。非常感谢专业人士的一些建议!
我正在编写一个简单的应用程序,用户在其中输入文本字段,然后在按下按钮时将答案吐出到另一个文本字段之前,应用程序中会发生一些乘法运算:"calculateTM".
我在计算本身时遇到了一些问题,也许是因为我试图在一行上做太多 - 获取文本字段条目,转换为整数,与另一个转换为整数的文本字段条目相乘,本质上是什么我在标题中写道:
var someVariable: Int = textfield.text.toInt() * textfield2.text.toInt()
问题是,Xcode 想要我强制解包并添加一个 !到两个 toInt() 的结尾。这很好,当然除非用户没有在框中输入任何内容并按下计算,此时 nil 值会导致程序崩溃,例如:
var someVariable: Int = textfield.text.toInt() x textfield2.text.toInt()
var someVariable2: Int = textfield3.text.toInt() x textfield4.text.toInt()
where the user doesn't enter anything into textfield3 or 4
按照这个简单的算法,代码更新标签(文本字段)如下:
label1.text = String(someVariable)
label2.text = String(someVariable2)
因此,最终转换回字符串可能还会产生一些问题,例如代码第一部分中如何处理可选值。
对 long-winded 的解释深表歉意,我希望我已经足够清楚了,但我想我在代码的第一部分遗漏了一些非常基本的东西。我试过使用可选的 ?还有 nil-coalescing 运算符(在 nil 的情况下设置为 0)但无法使其工作。请帮忙?
非常感谢!
使用 if let
进行可选绑定:
if let var1 = textField.text?.toInt(),
let var2 = textField2.text?.toInt() {
someVariable = var1 * var2 // or directly label1.text = String(var1 * var2)
}
方法 toInt() 实际上 returns 一个可选类型 'Int?' 可以是 nil 或整数值,所以你需要检查 String->Int 转换是否成功 returns Int 或 nil。
对于最基本的方式:
var intValue: Int? = text.toInt()
if intValue != nil {
// operations using intValue!
}
在swift中,你可以试试:
if let intValue = text.toInt() {
// operations
}
首先post这里请温柔点。我对编码相当陌生,正在努力了解 SWIFT 及其可选内容。非常感谢专业人士的一些建议!
我正在编写一个简单的应用程序,用户在其中输入文本字段,然后在按下按钮时将答案吐出到另一个文本字段之前,应用程序中会发生一些乘法运算:"calculateTM".
我在计算本身时遇到了一些问题,也许是因为我试图在一行上做太多 - 获取文本字段条目,转换为整数,与另一个转换为整数的文本字段条目相乘,本质上是什么我在标题中写道:
var someVariable: Int = textfield.text.toInt() * textfield2.text.toInt()
问题是,Xcode 想要我强制解包并添加一个 !到两个 toInt() 的结尾。这很好,当然除非用户没有在框中输入任何内容并按下计算,此时 nil 值会导致程序崩溃,例如:
var someVariable: Int = textfield.text.toInt() x textfield2.text.toInt()
var someVariable2: Int = textfield3.text.toInt() x textfield4.text.toInt()
where the user doesn't enter anything into textfield3 or 4
按照这个简单的算法,代码更新标签(文本字段)如下:
label1.text = String(someVariable)
label2.text = String(someVariable2)
因此,最终转换回字符串可能还会产生一些问题,例如代码第一部分中如何处理可选值。
对 long-winded 的解释深表歉意,我希望我已经足够清楚了,但我想我在代码的第一部分遗漏了一些非常基本的东西。我试过使用可选的 ?还有 nil-coalescing 运算符(在 nil 的情况下设置为 0)但无法使其工作。请帮忙?
非常感谢!
使用 if let
进行可选绑定:
if let var1 = textField.text?.toInt(),
let var2 = textField2.text?.toInt() {
someVariable = var1 * var2 // or directly label1.text = String(var1 * var2)
}
方法 toInt() 实际上 returns 一个可选类型 'Int?' 可以是 nil 或整数值,所以你需要检查 String->Int 转换是否成功 returns Int 或 nil。
对于最基本的方式:
var intValue: Int? = text.toInt()
if intValue != nil {
// operations using intValue!
}
在swift中,你可以试试:
if let intValue = text.toInt() {
// operations
}