我在xcode 7.3.1中的计算机代码不起作用,我该怎么办?

时间:2016-09-06 20:30:46

标签: ios swift

我正在尝试使用简单的计算器应用学习编程。我的代码总是出错,即使我尝试过在这个平台上找到的所有内容,它也无法正常工作。愿有人帮助我吗?我正在使用Swift。

@IBOutlet weak var number1: UITextField!
@IBOutlet weak var number2: UITextField!
@IBOutlet weak var operatorSegment: UISegmentedControl!
@IBOutlet weak var resultLabel: UILabel!
@IBAction func calculateButton() {
    let firstnumber = Int(number1)
    let secondnumber = Int(number2)
    switch operatorSegment.selectedSegmentIndex {
    case 0:
        resultLabel.text = firstnumber + secondnumber
    case 1:
        resultLabel.text = firstnumber - secondnumber
    default:
        resultLabel.text = "Error"
    }

3 个答案:

答案 0 :(得分:1)

  1. 要访问textField的值,您需要使用.text属性,因此您需要将Int(number1)更改为Int(number1.text!),并将number2更改为guard let
  2. 您应该进行if letInt检查,以确保这些值不为零并且可以转换为整数。
  3. 您无法为resultLabel.text分配String值,您需要先将结果转换为resultLabel.text = "\(firstnumber + secondnumber)",如下所示:calculateButton
  4. 考虑到所有这些因素,@IBAction func calculateButton() { guard let firstnumber = Int(number1.text!) else { // number1 can't be converted to an integer resultLabel.text = "Error" return } guard let secondnumber = Int(number2.text!) else { // number2 can't be converted to an integer resultLabel.text = "Error" return } switch operatorSegment.selectedSegmentIndex { case 0: resultLabel.text = "\(firstnumber + secondnumber)" case 1: resultLabel.text = "\(firstnumber - secondnumber)" default: resultLabel.text = "Error" } } 函数的最终代码应如下所示:

    <div class="row">
        <!-- FOR ARTICLE IN ARTICLES -->
            <div class="col-md-6">
                <article>
                   <!-- content with variable height -->
                </article>
            </div>
        <!-- ENDFOR -->
    </div>
    

答案 1 :(得分:0)

我看到的一个问题是在switch语句中,您将Int直接传递到textfield的文本字符串中。

resultLabel.text = firstnumber + second number

首先需要在将ints传递到文本字段之前将其强制转换为字符串。之后switch语句看起来应该是这样的。

switch operatorSegment.selectedSegmentIndex {
    case 0:
        resultLabel.text = "\(firstnumber + second number)" //String
    case 1:
        resultLabel.text = "\(firstnumber - second number)" //String
    default:
        resultLabel.text = "Error"
}

答案 2 :(得分:0)

首先,我要假设Int(number1)Int(number2)都返回有效Int s。如果没有,那么你还有另一个问题。

主要问题是,您无法将Int(或您的Int的总和)转换为String的预期类型resultLabel.text期待。

//        String =     Int     +     Int       <- Not allowed
resultLabel.text = firstnumber + secondnumber

您可以计算该值并对其进行插值,也可以只使用其中的计算实例化一个新的String对象。 e.g。

前#1:resultLabel.text = String(firstnumber + secondnumber)

前#2:resultLabel.text = "\(firstnumber + secondnumber)"