Swift 计算 UITextFields 的值并返回值

编程入门 行业动态 更新时间:2024-10-22 15:38:47
本文介绍了Swift 计算 UITextFields 的值并返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

使用 swift 和 Xcode 6,我试图返回一个基于几个 UITextField 的内容计算的值.

Using swift and Xcode 6, I'm trying to return a value calculated based on content of few UITextFields.

我已经声明了变量

var Number1 = Field1.text.toInt() var Number2 = Field2.text.toInt() var Duration = Number1*Number2 Mylabel.text = String ("\(Duration)")

这个想法是从几个 UI 字段中捕获持续时间,并根据这些值的计算将其分配给变量并将其显示在标签上.

The idea is to capture duration from few UI Fields and based on calculation of those values assign that to a variable as well as display it on a label.

在线:var Duration = Number1*Number2

In line: var Duration = Number1*Number2

我遇到的挑战是在执行乘法时 Xcode 高亮错误:可选类型Int?"的值未解开;你的意思是使用!"还是?"?

Challenge is that I have is that when performing multiplication Xcode highlight error: Value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?

推荐答案

toInt() 方法返回一个 optional 值,因为它尝试转换的字符串可能不包含适当的值.例如,这些字符串将被转换为 nil: "house", "3.7","" (空字符串).

The toInt() method returns an optional value because the string it is trying to convert may not contain a proper value. For instance, these strings will be converted to nil: "house", "3.7","" (empty string).

因为值可能是 nil,toInt() 返回一个可选的 Int,它的类型是 Int?>.如果不先打开它,就不能使用该值.这就是您收到错误消息的原因.以下是两种安全的处理方法:

Because the values may be nil, toInt() returns an optional Int which is the type Int?. You can't use that value without unwrapping it first. That is why you are getting the error message. Here are two safe ways to handle this:

当值无法转换时,您需要决定要做什么.如果你只是想在这种情况下使用 0,那么使用 nil 合并运算符 (??) 像这样:

You need to decide what you want to do when a value can't be converted. If you just want to use 0 in that case, then use the nil coalescing operator (??) like so:

let number1 = field1.text.toInt() ?? 0 // number1 now has the unwrapped Int from field1 or 0 if it couldn't be converted let number2 = field2.text.toInt() ?? 0 // number2 now has the unwrapped Int from field2 or 0 if it couldn't be converted let duration = number1 * number2 mylabel.text = "\(duration)"

如果你想让你的程序在两个字段都具有有效值之前什么都不做:

If you want your program to do nothing unless both fields have valid values:

if let number1 = field1.text.toInt() { // if we get here, number1 contains the valid unwrapped Int from field1 if let number2 = field2.text.toInt() { // if we get here, number2 contains the valid unwrapped Int from field2 let duration = number1 * number2 mylabel.text = "\(duration)" } }

那么,当错误消息说您要使用 ! 时,它是什么意思.您可以通过在末尾添加 ! 来解开一个可选值,但是首先您必须绝对确定该值不是 nil,否则您的应用会崩溃.所以你也可以这样做:

So, what did the error message mean when it said did you mean to use a !. You can unwrap an optional value by adding a ! to the end, but you must be absolutely sure the value is not nil first or your app will crash. So you could also do it this way:

if number1 != nil && number2 != nil { let duration = number1! * number2! mylabel.text = "\(duration)" }

更多推荐

Swift 计算 UITextFields 的值并返回值

本文发布于:2023-06-04 19:10:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/503364.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:返回值   Swift   UITextFields

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!