This question already has answers here:
Swift Compiler Error: “Expression too complex” on a string concatenation
(4个答案)
三年前关闭。
抱歉,如果我的问题有一个可笑的简单答案,但我是新手,所以我不知道该怎么办。
我正在制作一个应用程序,告诉你一只动物需要多少药物,根据它们的体重等。对于LRS(一种药物),公式是
30*重量*系数+70*系数+脱水+重量
所以在我的代码中,我输入了
lrs24.text == 30 * &weight * &factor + 70 * &factor + &deh + &weight;

编译器说“表达式太复杂,无法在合理的时间内解决…”这是什么意思,我如何修复它?也许我只是输入了一些错误的代码?谢谢!
PS-编译器说要将表达式分解成更小的子表达式,但我不知道如何做到这一点:(
PPS-这是我的完整代码:
import UIKit

类ViewController:UIViewController,uitextfieldelegate{
@IBOutlet weak var animalNum: UITextField!
@IBOutlet weak var logLabel: UILabel!
@IBOutlet weak var resetButton: UIButton!


@IBOutlet weak var weight: UITextField!
@IBOutlet weak var deh: UITextField!
@IBOutlet weak var losses: UITextField!
@IBOutlet var factor: [UITextField]!

@IBOutlet weak var lrs24: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    // Handle the text field’s user input through delegate callbacks.
    animalNum.delegate = self
}

// MARK: UITextFieldDelegate

func textFieldShouldReturn(textField: UITextField) -> Bool {
    // Hide the keyboard.
    textField.resignFirstResponder()
    return true
}

func textFieldDidEndEditing(textField: UITextField) {
    logLabel.text = textField.text
}

// MARK: Actions
@IBAction func setDefaultLabelText(sender: UIButton) {
    logLabel.text = "Default Text"
}


@IBAction func textFieldsDidEndEditing(sender: AnyObject) {
    lrs24.text == (30 * weight + 70) * factor + weight * deh * 10 + losses;





}

}

最佳答案

首先,===之间的区别在于,第一个是右边的值对左边的值的赋值,而第二个是左边的值对右边的值的相等检验。换句话说,第一个是操作,而第二个是真/假条件。
在同时对字符串组件的值进行算术运算时,您似乎正在尝试连接字符串。这不是一个问题,但是John Hascall在上面给出的引用表明,在Swift中连接字符串时,这个错误是一个已知的问题。正如John Hascall也指出的那样,一个解决方案是简化方程。我建议首先通过算术方法获取这些值,将每个值放在一个字符串中,然后连接这些字符串。
现在,您不能仅仅通过引用UITextField的名称来获取UITextField的值。它是一个具有属性的对象,其中一个属性是文本作为数字的值(如果您首先测试以确保它是数字)。阅读有关访问UITextfield属性和获取有效数字的内容,以便找出该方面的代码。
将(30*weight*factor),(70*factor),脱水和权重的值分别插入一个字符串(这样可以避免出现错误),然后将这些字符串连接到最终结果中。

关于ios - “表达太复杂而无法在合理的时间内解决……”是什么意思,我该如何解决? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34551892/

10-11 23:16
查看更多