添加 4 个滑块值时,表达式太复杂,无法在合理的时间错误内解决

Posted

技术标签:

【中文标题】添加 4 个滑块值时,表达式太复杂,无法在合理的时间错误内解决【英文标题】:Expression was too complex to be solved in reasonable time error while adding 4 slider values 【发布时间】:2018-09-03 01:56:04 【问题描述】:

我尝试添加这 4 个滑块值,但收到此错误,我该如何解决?代码:

@IBAction func mathValueChanged(_ sender: UISlider) 
    let total = MathCriASlider.value + MathCriBSlider.value + MathCriCValue.value + MathCriDSlider.value
    mathValue.text = "/(total)"

【问题讨论】:

尝试清理项目 (CMD + K) 并重新构建,如果不起作用,请重新启动 Xcode,如果不起作用,请重新启动您的 mac。 我想知道是否有错误,因为您没有引用“发件人”。 @EmilioPelaez 有道理 - 但如果 所有 四个滑块都连接到 mathValueChanged,您是否应该(至少在逻辑上)处理 sender 滑块? 如果您希望您的操作添加所有滑块的值,则使用 ivars 而不是 sender 是有意义的。我个人会创建不带参数的方法,但是Xcode默认添加它,并且OP看起来像一个新手,所以他们通过了。但它不应该导致这个错误,它应该只发生在非常复杂的东西上,除非 OP 的计算机被其他东西拖慢了。 我是 OP 吗?无论如何,感谢您的帮助,是的,我是新手。 是的,你是“OP”,意思是“原始发帖人”——这个问题或线程的创建者。 【参考方案1】:

确实令人沮丧,我很惊讶在最新版本的 Swift 中看到这一点。在过去,我只需要分解表达式。例如

let A = MathCriASlider.value
let B = MathCriBSlider.value
let C = MathCriCSlider.value
let D = MathCriDSlider.value
let total = A + B + C + D

如果它仍然抱怨,您甚至可能需要计算一对小计。

第二行需要修复,你的字符串插值是错误的。使用

mathValue.text = "\(total)"  // I changed the slash to a backslash

【讨论】:

以上是关于添加 4 个滑块值时,表达式太复杂,无法在合理的时间错误内解决的主要内容,如果未能解决你的问题,请参考以下文章

如何使用按钮将4个滑块值一起添加?

处理多个 UISlider

如何在NetLogo中创建2个滑块值不能超过定义值的条件?

显示多个滑块值的 UILabel

滑块更新选择值现在获取选择值来更新滑块值?

如何固定滑块值和返回值-奇异