Swift计算UITextFields的值并返回值

使用swift和Xcode 6,我试图返回基于less数UITextFields的内容计算的值。

我已经声明variables

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

这个想法是从几个UI字段中获取持续时间,并基于这些值的计算将其分配给一个variables,并将其显示在标签上。

在行中:var Duration = Number1 * Number2

挑战是我的是当执行乘法Xcode突出显示错误:可选types'Int?'的值 不解开; 你的意思是使用'!' 要么 '?'?

toInt()方法返回一个可选的值,因为它试图转换的string可能不包含正确的值。 例如,这些string将被转换nil"house""3.7""" (空string)。

因为值可能是niltoInt()返回一个可选的Int ,这是Int?typesInt? 。 如果不先打开它,则不能使用该值。 这就是为什么你收到错误信息。 这里有两个安全的方法来处理这个问题:

当一个值不能被转换时,你需要决定你想要做什么。 如果你只想在这种情况下使用0 ,那么使用nil合并运算符?? )如下所示:

 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 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)" } } 

那么,这个错误信息是什么意思呢! 。 你可以打开一个可选的值,通过添加一个! 到最后,但你必须绝对确定价值不是第一,否则你的应用程序将崩溃 。 所以你也可以这样做:

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

获取var中的textFields的值,将它们相乘,然后设置label的值。 尝试这个:

 var Number1 = Field1.text.toInt() var Number2 = Field2.text.toInt() var Duration = Number1 * Number2 Mylabel.text = NSString(format:"%d",Duration!)as String; 

希望这可以帮助.. :)