ios - SWIFT:var someVariable:int = textfield.text.toInt() x textfield2.text.toInt() 并强制展开

标签 ios swift int textfield option-type

第一次发帖,请多多关照。我对编码相当陌生,正在努力了解 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)

因此,最终转换回字符串也可能会产生一些问题,例如在代码的第一部分中如何处理可选值。

对于冗长的解释深表歉意,我希望我已经足够清楚了,但我想我在代码的第一部分遗漏了一些非常基本的东西。我试过使用可选的 ?还有 nil-coalescing 运算符(在 nil 的情况下设置为 0)但无法使其工作。请帮忙?

非常感谢!

最佳答案

使用 if let 进行可选绑定(bind):

if let var1 = textField.text?.toInt(),
   let var2 = textField2.text?.toInt() {
 someVariable = var1 * var2 // or directly label1.text = String(var1 * var2)
}

关于ios - SWIFT:var someVariable:int = textfield.text.toInt() x textfield2.text.toInt() 并强制展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575543/

相关文章:

ios - 为什么这个 UIImageView 认为它是一个 UIView?

ios - 处理 iOS 音频流

ios - 通过证书进行客户端身份验证的 Swift 3 UrlSession

c - 读取一个文本文件的确定部分,忽略注释 - C 语言

java - 异常 -- 线程 "main"java.util.InputMismatchException 中出现异常

ios - 使用 MFMailComposeViewController 时出现问题

ios - 如何获取选定的 collectionviewcell 的名称?

ios - Swift 3.1 弃用了 initialize()。我怎样才能达到同样的目的?

ios - 使用 .leftMirrored 方向保存照片问题

python - 子类化 int 以允许 "unknown"值